我想在摩卡书写一些测试,我要通过BrowserStack在几个浏览器中自动化。像这样(实际的测试细节不重要),我不想重复每个浏览器的test.it
代码,而是想让我的代码保持干爽,并将几个test.it
块封装在一个函数中,然后在test.describe
内调用该函数。我如何重复使用摩卡测试,所以我不必重复自己?
function runTests(driver) {
test.it('form works', function() {
var result = testForm(driver, '#formId', '[email protected]');
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(); });
});
但由于这个代码是异步,driver
当runTests()
被称为是没有定义,所以它失败。我如何构造这个结构,以便我不必为每个浏览器重复test.it
块?