У меня есть два шага с похожей формулировкой, но все же достаточно разные (надеюсь):
@When("I send $method '$url'")
public void sendMethodURL(
@Named("method") final String method,
@Named("url") final String url)
{
// stuff
}
@When("I send $method '$url' with JSON '$body'")
public void sendMethodURLBody(
@Named("method") final String method,
@Named("url") final String url,
@Named("body") final String inputJSON)
{
// stuff
}
Однако в моей истории есть:
When I send POST '/blah/foo/bar' with JSON '["some", "json"]'
Тем не менее, он вызывает sendMethodURL
, где method
— это "POST '/blah/foo/bar' with JSON"
, а URL — "[\"some\", \"json\"]"
. Ясно, что я предпочел бы, чтобы он вызывал sendMethodURLBody
вместо этого.
Что я здесь делаю неправильно? Как я могу заставить JBehave различать два шага?
Редактировать: я понимаю, что RegexStepMatcher соответствует первому @When, который находит совпадение (то есть sendMethodURL
)... но как я могу сохранить грамматику такой, какая она есть, но различать два, чтобы она больше не соответствовала обоим шагам? Порядок методов, кажется, работает, но должен быть менее хрупкий способ.