Cucumber 黄瓜+;小黄瓜:将自然语言解析为布尔语言
所以,我们刚刚引入Cucumber+Gherkin,在我们相当新鲜的Angular2项目中探索e2e测试。我们决定用JS编写步骤定义。我试图在步骤定义中相当通用。 这就是我努力实现的目标: 我们有Cucumber 黄瓜+;小黄瓜:将自然语言解析为布尔语言,cucumber,gherkin,cucumberjs,Cucumber,Gherkin,Cucumberjs,所以,我们刚刚引入Cucumber+Gherkin,在我们相当新鲜的Angular2项目中探索e2e测试。我们决定用JS编写步骤定义。我试图在步骤定义中相当通用。 这就是我努力实现的目标: 我们有 this。然后(/^我应该在$/页上看到(.*)函数(componentName,callback){ expect(element(by.id(componentName)).isPresent())to.finally.be.true; setTimeout(回调,1000); }); 我还允许以
this。然后(/^我应该在$/页上看到(.*)函数(componentName,callback){
expect(element(by.id(componentName)).isPresent())to.finally.be.true;
setTimeout(回调,1000);
});代码>
我还允许以下形式的定义:
那么我不应该在页面上看到结果
表示某些元素不应显示。有没有什么优雅的方法,或者我可以使用的内置工具?文档和谷歌搜索只给了我描述中包含true/false
的东西。我有一种感觉,c'n'p将使我们的step定义快速增长,并使维护变得不必要的困难,除非我们提前解决此类问题。
如果您认为这是一个愚蠢的想法,请阻止我,如果是,请告诉我原因。您可以在步骤中捕获关键字“not”,并在步骤实现中实现两条路径,条件是选择正确的路径
然而,我不会这样做,而是接受两个步骤。这将使您的代码更易于阅读,因此更不容易出错
我将努力使步骤成为一行程序,并将执行委托给助手类。helper类可以有两种输入方式,正反两种。它还可以处理一些事情,比如你似乎在超时等
在重新编写代码时,我会尝试这样做:
this.Then(/^I should see (.*) on the page$/, function(componentName) {
isPresent(componentName);
});
否定的情况是
this.Then(/^I should not see (.*) on the page$/, function(componentName) {
isNotPresent(componentName);
});
我不擅长JavaScript,所以这可能不是JavaScript的方式。但我会努力将潜在的公共细节推给助手,并尽量减少Gherkin和JavaScript之间需要的粘合代码。您可以在步骤中捕获关键字“not”,并在步骤实现中实现两条路径,条件是选择正确的路径
然而,我不会这样做,而是接受两个步骤。这将使您的代码更易于阅读,因此更不容易出错
我将努力使步骤成为一行程序,并将执行委托给助手类。helper类可以有两种输入方式,正反两种。它还可以处理一些事情,比如你似乎在超时等
在重新编写代码时,我会尝试这样做:
this.Then(/^I should see (.*) on the page$/, function(componentName) {
isPresent(componentName);
});
否定的情况是
this.Then(/^I should not see (.*) on the page$/, function(componentName) {
isNotPresent(componentName);
});
我不擅长JavaScript,所以这可能不是JavaScript的方式。但我会努力将潜在的公共细节推给助手,并尽量减少小黄瓜和JavaScript之间所需的粘合代码。这听起来是合理的中间立场。谢谢这听起来是合理的中间立场。谢谢