我有两个措辞相似的步骤,但仍然不同(我希望):
@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"
,网址为"[\"some\", \"json\"]"
。很明显,我宁愿打电话给sendMethodURLBody
。
我在这里做错了什么?如何让JBehave区分这两个步骤?
编辑:我意识到RegexStepMatcher匹配第一个@When它找到匹配项(sendMethodURL
)...但是我怎样才能保持语法不变,但是将它们区分开来让它不再是匹配这两个步骤?方法的顺序似乎有效,但必须有一种不那么脆弱的方式。
答案 0 :(得分:1)
我们遇到了同样的问题,但我们的解决方法是使用不同的措辞来区分彼此的步骤。据我所知,这不是你的选择。在这种情况下,我建议查看步骤优先级 - 您可以将更高的优先级设置为更长的步骤,因此首先尝试它(请参阅JBehave文档:http://jbehave.org/reference/stable/prioritising-steps.html)。