Javascript Cumber JS:自定义参数类型不匹配
我有一些使用自定义参数的步骤定义Javascript Cumber JS:自定义参数类型不匹配,javascript,typescript,cucumber,bdd,cucumberjs,Javascript,Typescript,Cucumber,Bdd,Cucumberjs,我有一些使用自定义参数的步骤定义 const assertEntity = function(name: string, operator: string, otherName: string) { console.log(`assertAttrs with ${name} ${operator} ${otherName}`); }; Then("{name} object is {
const assertEntity = function(name: string, operator: string,
otherName: string) {
console.log(`assertAttrs with ${name} ${operator} ${otherName}`);
};
Then("{name} object is {operator} {otherName}", assertEntity);
和以下要素文件(已截断)
和这样定义的参数类型
defineParameterType({
regexp: /name/,
transformer: function(s) {
return s;
},
name: "name"
});
然而cucumber说步骤定义是未定义的
? Given we have a new ApiKey called Red
Undefined. Implement with the following snippet:
Given('we have a new ApiKey called Red', function () {
// Write code here that turns the phrase above into concrete actions
return 'pending';
});
我相信问题出在我的regexp中,但我在示例中看到了这一点,因此我不确定如何继续。变压器如何工作
Given I am on the "Home" page
Given I am on the "My Basket" page
两个都可以由变压器匹配:
defineParameterType({
regexp: /"([^"]*)"/,
transformer(string) {
return urls[string.replace(/ /g, "_").toLowerCase()]
},
name: 'page',
useForSnippets: false
});
这里发生的转换是url位于各种url的数组中
答案
例如,您提供的步骤定义与您提供的步骤不匹配
但是,如果我们继续这样做:
Given we have a new ApiKey called "Red"
通过使用如下步骤定义:
Given('we have a new ApiKey called {name}', function(){
return pending
});
defineParameterType({
regexp: /"([^"]*)"/,
transformer: function(s) {
return s;
},
name: "name",
useForSnippets: false
});
我们需要这样的步进变压器:
Given('we have a new ApiKey called {name}', function(){
return pending
});
defineParameterType({
regexp: /"([^"]*)"/,
transformer: function(s) {
return s;
},
name: "name",
useForSnippets: false
});
注意:
“([^”]*)”
不是与Cucumber匹配的全部正则表达式,但在Cucumber表达式出现3.x.x之前,它是步骤定义中的一个相当标准的正则表达式,因此我使用的两个示例与它们一起。转换器如何工作
Given I am on the "Home" page
Given I am on the "My Basket" page
两个都可以由变压器匹配:
defineParameterType({
regexp: /"([^"]*)"/,
transformer(string) {
return urls[string.replace(/ /g, "_").toLowerCase()]
},
name: 'page',
useForSnippets: false
});
这里发生的转换是url位于各种url的数组中
答案
例如,您提供的步骤定义与您提供的步骤不匹配
但是,如果我们继续这样做:
Given we have a new ApiKey called "Red"
通过使用如下步骤定义:
Given('we have a new ApiKey called {name}', function(){
return pending
});
defineParameterType({
regexp: /"([^"]*)"/,
transformer: function(s) {
return s;
},
name: "name",
useForSnippets: false
});
我们需要这样的步进变压器:
Given('we have a new ApiKey called {name}', function(){
return pending
});
defineParameterType({
regexp: /"([^"]*)"/,
transformer: function(s) {
return s;
},
name: "name",
useForSnippets: false
});
注意:
“([^”]*)”
并不是与Cucumber匹配的全部正则表达式,但在Cucumber表达式出现在3.x.x之前,它是一个相当标准的正则表达式,因此我使用的两个示例与它们一起。谢谢,我用了一些技巧解决了这个问题。有一个名为Behave的Python库,它可以为您实现这一点。您将步骤定义为“给定我有{something}名为{name}”,函数定义为step(something,name)
,这正是我在这里所期望的。谢谢,我通过一些提示解决了这个问题。有一个名为Behave的Python库,它可以为您实现这一点。您将步骤定义为“给定名为{name}的{something}”,函数定义为step(something,name)
,这正是我在这里所期望的。