TechTalk.SpecFlow.BindingException: 'Несоответствие количества параметров!Метод связывания - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь написать StepArgumentTransformation для specflow.

У меня есть следующий корнишон

Scenario: Test Arguments
Given user enter once as 2

И я написал это в определении шага.

    [StepArgumentTransformation]
    public int GetOnces(string onces, string times)
    {
        return 1 * int.Parse(times);
    }

    [Given(@"user enter (.*) as (.*)")]
    public void GivenUserEnterOnce(int num)
    {
        Assert.Equal(2, num);
    }

Но GetOnces метод никогда не вызывается иЯ получаю исключение

TechTalk.SpecFlow.BindingException: 'Несоответствие количества параметров!Метод привязки «GivenUserEnterOnce (Int32)» должен иметь 2 параметра

1 Ответ

0 голосов
/ 21 декабря 2018

Привязки должны быть такими:

[StepArgumentTransformation("(.*) as (.*)")]
public int GetOnces(string onces, string times)
{
    return 1 * int.Parse(times);
}

[Given(@"user enter (.*)")]
public void GivenUserEnterOnce(int num)
{
    Assert.Equal(2, num);
}

Если требуется преобразовать более одного параметра, вы должны указать регулярное выражение в StepArgumentTransformation.Ваш реальный шаг получает только один параметр, поэтому допустим только один параметр в регулярном выражении.

Документацию по этому вопросу вы найдете здесь: https://specflow.org/documentation/Step-Argument-Conversions/

...