Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Cumber JS:自定义参数类型不匹配_Javascript_Typescript_Cucumber_Bdd_Cucumberjs - Fatal编程技术网

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中,但我在示例中看到了这一点,因此我不确定如何继续。

变压器如何工作

  • 正则表达式必须与参数匹配
  • cucumber表达式在转换回正则表达式时必须与步骤匹配
  • 您可以使用任何类型的转换。例如:

    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之前,它是步骤定义中的一个相当标准的正则表达式,因此我使用的两个示例与它们一起。

    转换器如何工作

  • 正则表达式必须与参数匹配
  • cucumber表达式在转换回正则表达式时必须与步骤匹配
  • 您可以使用任何类型的转换。例如:

    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)
    ,这正是我在这里所期望的。