JBehave拨打错误的@When步骤

时间:2013-08-06 22:16:50

标签: jbehave

我有两个措辞相似的步骤,但仍然不同(我希望):

@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"]'

然而,它正在调用sendMethodURLmethod"POST '/blah/foo/bar' with JSON",网址为"[\"some\", \"json\"]"。很明显,我宁愿打电话给sendMethodURLBody

我在这里做错了什么?如何让JBehave区分这两个步骤?

编辑:我意识到RegexStepMatcher匹配第一个@When它找到匹配项(sendMethodURL)...但是我怎样才能保持语法不变,但是将它们区分开来让它不再是匹配这两个步骤?方法的顺序似乎有效,但必须有一种不那么脆弱的方式。

1 个答案:

答案 0 :(得分:1)

我们遇到了同样的问题,但我们的解决方法是使用不同的措辞来区分彼此的步骤。据我所知,这不是你的选择。在这种情况下,我建议查看步骤优先级 - 您可以将更高的优先级设置为更长的步骤,因此首先尝试它(请参阅JBehave文档:http://jbehave.org/reference/stable/prioritising-steps.html)。