作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 mocha 编写一些测试,我将通过 BrowserStack 在多个浏览器中自动执行这些测试。与其为每个浏览器重复 test.it
代码,我想让我的代码保持干爽,并将一些 test.it
block 包装在一个函数中,然后在内部调用该函数test.describe
,像这样(实际的测试细节并不重要);
function runTests(driver) {
test.it('form works', function() {
var result = testForm(driver, '#formId', 'test@test.com');
return 'Expected Result' === result;
});
}
test.describe('Tests for IE 9', function() {
var driver;
test.before(function() {
var capabilities = {
'browser' : 'IE',
'browser_version' : '9.0'
};
driver = setupDriver(capabilities);
});
runTests(driver);
test.after(function() { driver.quit(); });
});
test.describe('Tests for IE 10', function() {
var driver;
test.before(function() {
var capabilities = {
'browser' : 'IE',
'browser_version' : '10.0'
};
driver = setupDriver(capabilities);
});
runTests(driver);
test.after(function() { driver.quit(); });
});
但是由于这段代码是异步的,调用runTests()
时没有定义driver
,所以失败了。我该如何构造它,以便我不必为每个浏览器重复 test.it
block ?
最佳答案
我会这样构造它:
function makeTests(kind, version) {
describe("Tests for " + kind + " " + version, function () {
var driver;
before(function() {
var capabilities = {
'browser' : kind,
'browser_version' : version
};
driver = setupDriver(capabilities);
});
it('form works', function() {
var result = testForm(driver, '#formId', 'test@test.com');
if ('Expected Result' !== result)
throw new Error("failed!");
});
// Add more tests here...
after(function() { driver.quit(); });
});
}
makeTests('IE', '9');
makeTests('IE', '10');
我在上面的代码中直接使用了 describe
和 it
而不是 test.describe
等。我想你的测试环境包装Mocha 调用或您正在使用我不熟悉的界面。
关于javascript - 我怎样才能重用 mocha 测试,这样我就不必重复自己了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26022637/
我是一名优秀的程序员,十分优秀!