我想在摩卡書寫一些測試,我要通過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
塊?