我刚刚开始使用cucumberJs,gulp和protractor进行角度应用程序注意,幸运的是,当我的所有步骤都通过时,如果你没有传入并在步骤定义中使用'callback'参数,那么cucumberJs可能会不知道该步骤何时完成并将跳过其他步骤并将它们全部标记为“已通过”
以下是来自cucumberJs doc: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);
//
将回调传递给visit(),以便在作业完成时, 下一步可以 //由Cucumber执行
。 });
示例2:
this.When(/^I go to the README file$/, function (callback) {
// Express the regexp above with the code you wish you had.
最后调用callback() //步骤,或回调(null,'pending')如果步骤尚未实现:
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));
}
});
};
我知道你有两个选择: 一个。您要么返回一个承诺,也不要通过回叫或 湾您传入回调参数并在步骤定义完成时调用它,以便cucumberJs知道返回并转到下一步或下一个场景。
但是,我尝试了上述两种情况,但仍然遇到了一个奇怪的情况,即前两个场景将按照您的预期正常工作,但同一个功能文件中的第三个和第四个场景将被跳过并全部通过。
对于超过2个场景的功能,有什么特别需要考虑的吗? 只要每个功能文件都有< = 2个场景,一切正常,但是当我有第三个场景到该特征文件时,第三个场景被忽略并跳过。
有什么想法吗?
答案 0 :(得分:0)
在没有看到您的实际步骤的情况下,我无法肯定地说,但这听起来像是一个异步问题,或者我敢说,这是场景中的语法错误。您是否尝试更改方案的顺序以查看是否会产生影响。