Обнаружено несколько сопоставлений совпадений с двумя разными параметрами
Я написал две строки (когда) в моем файле
When user $action1$ $key1$ with $value1$ for $atttributeType_Value$ in $Filename1_SectionId1$
Then abc
When user $action2$ $key2$ with $value2$ in $Filename2_SectionId2$
Then def
и соответствующее определение шага в файле определения шага
как
[When(@"user (.*) (.*) with (.*) for (.*) in (.*)")]
public void abc()
{ //operation }
[When(@"user (.*) (.*) with (.*) in (.*)")]
public void def()
{ //operation }
Но появляется ошибка "Найдено несколько привязок совпадений. Переход к первому совпадению..."
Когда я пытаюсь перейти к 1-й строке, это дает ошибку... Но когда я перемещаюсь, используя вторую строку Когда. это навигация правильно.
Я использовал "$" там, где должны быть "<" и ">".
2 ответа
Проблема в том, что ваш второй регулярное выражение:
with (.*) in (.*)
соответствует обеим этим строкам
with a partridge in a pear tree
with a partridge for Christmas in a pear tree
В первом случае он выберет "куропатку" и "грушевое дерево" в качестве двух аргументов. Во втором случае в качестве аргументов он выберет "куропатку на Рождество" и "грушевое дерево". Поскольку ваше первое регулярное выражение также соответствует этой второй строке, оно действительно находит несколько привязок.
Вы можете использовать другое регулярное выражение. Например, если вы хотите выделить целое слово и не включать пробелы, попробуйте (\S*)
вместо (.*)
, Тот .
соответствует чему угодно, включая пробелы. Подробнее о регулярных выражениях здесь.
AFAIK Интеграция Visual Studio переходит к первому определению шага, которое находит.
Регулярное выражение def()- Steps также охватывает случаи abc- Step. Вы пытались поместить параметры в одинарные кавычки?
Как это:
Особенность:
When user '$action1$' '$key1$' with '$value1$' for '$atttributeType_Value$' in '$Filename1_SectionId1$'
Then abc
When user '$action2$' '$key2$' with '$value2$' in '$Filename2_SectionId2$'
Then def
Шаговые привязки:
[When(@"user '(.*)' '(.*)' with '(.*)' for '(.*)' in '(.*)'")]
public void abc()
{ //operation }
[When(@"user '(.*)' '(.*)' with '(.*)' in '(.*)'")]
public void def()
{ //operation }
Это должно исправить вашу проблему.