【发布时间】:2019-12-31 19:01:28
【问题描述】:
我希望将数据从一个 jbehave 故事文件传输到另一个 jbehave 故事文件。
我已经尝试过 GivenStories 语法,但这对我不起作用。
场景 1:创建应用程序
鉴于我登录 然后我输入金额 然后我输入百分比
...然后将参数作为全局变量传递给子故事
继续原来的故事
参数可以作为全局变量传递
预期结果是父故事的执行应在同一会话中继续,同时在故事文件之间调用子故事
【问题讨论】:
标签: jbehave
我希望将数据从一个 jbehave 故事文件传输到另一个 jbehave 故事文件。
我已经尝试过 GivenStories 语法,但这对我不起作用。
场景 1:创建应用程序
鉴于我登录 然后我输入金额 然后我输入百分比
...然后将参数作为全局变量传递给子故事
继续原来的故事
参数可以作为全局变量传递
预期结果是父故事的执行应在同一会话中继续,同时在故事文件之间调用子故事
【问题讨论】:
标签: jbehave
将参数或任何其他类型的数据从一个场景传递到另一个场景并不是一个好习惯。所有场景必须是独立的,不应依赖外部数据;具有预测性和可重复性。
那么...就像你说的,要执行子故事,你可以使用GivenStories:关键字。
在故事之间传递任何数据的最简单方法是将其存储在内存中。
@Autowired //This object must be unique between all your stories
private Map<Object, Object> dataHolder;
@When("I enter Amount=$value")
public void enterAmount(Integer value){
dataHolder.put("amount", value);
//... the rest of your code
}
@Then("I do something with my parameters")
public void doSomething(){
Integer amount = (Integer) dataHolder.get("amount");
//... do anything you need with your parameters
}
您不需要下一个场景的参数,只需清理您的 dataHolder。您想保持相同的参数,请保持原样。
【讨论】: