我剛開始使用cucumberJs,gulp和量角器爲一個角度的應用程序,並注意到,幸運的是,我的所有步驟都過去了,如果你不通過並在步驟定義中使用'callback'參數,cucumberJs可能不會知道,當該步驟完成,並且將跳過的其它步驟和它們所有標記爲「通過」CucumberJs跳過步驟定義 - 也許回調步驟定義中的最後一個參數?
下面是從cucumberJs文檔的一個示例:https://github.com/cucumber/cucumber-js
實施例1:
this.Given(/^I am on the Cucumber.js GitHub repository$/, function (callback) {
// Express the regexp above with the code you wish you had.
// `this` is set to a World instance.
// i.e. you may use this.browser to execute the step:
this.visit('https://github.com/cucumber/cucumber-js', callback);
//
的回調是通過編輯訪問()這樣,當作業的完成,該 下一步可以 //黃瓜
執行。 });
實施例2:
this.When(/^I go to the README file$/, function (callback) {
// Express the regexp above with the code you wish you had.
呼叫回調()結尾 //的步驟中,或回調(NULL, '等待處理'),如果步驟尚未實現:
callback(null, 'pending');
});
實施例3:
this.Then(/^I should see "(.*)" as the page title$/, function (title, callback) {
// matching groups are passed as parameters to the step definition
var pageTitle = this.browser.text('title');
if (title === pageTitle) {
callback();
} else {
callback(new Error("Expected to be on page with title " + title));
}
});
};
我知道你在這裏有兩個選擇: a。 b。您要麼退回承諾,不要將電話轉回或b。您傳遞迴調參數,並在步驟定義完成後調用它,以便cucumberJs知道要返回並轉到下一步或下一個場景。
但是,我嘗試了上述兩種方法,仍然遇到了一個奇怪的情況,前兩種情況按照您的預期正常工作,但同一功能文件中的第三種和第四種情況將被忽略並全部通過。
有什麼特別的要考慮超過2場景的功能? 只要我有每個功能文件的< = 2場景,一切正常,但是當我有第三個場景時,該第三個場景被忽略並跳過。
任何想法?
嗨findlayc,是的,這是奇怪的事情,改變場景的工作順序,而不改變實際場景 - 場景中沒有語法錯誤,否則相同的場景將不會僅僅通過重新排列順序。 – pelican
聽起來像是一個異步問題 – findlayc