当我在serach文本字段中输入名称foo_SCENARIO_UUID时
实现:
@When("^I enter the name "([^"]*)" in serach text field$")
public void i_enter_someText_in_search_textField(String searckKey) throws Throwable {
pageCollection.searchPage().enterKeyword(searchKey);
}
我的问题是如何在我的功能中使用'SCENARIO_UUID'的任何地方设置System.currentTimeMillis()的值。
无论如何,我可以覆盖解析这些值的Cucumberoptions,而不是在每个步骤实现中编写逻辑。
我们在Jbehave中有此选项
@Override
public Configuration configuration() {
if (config != null)
return config;
config = useParameterConverters(new ParameterConverters()
.addConverters(new StringConverter()));
我无法在Cucumber中找到任何此类选项,以确保每次运行测试时都会搜索新字符串:(
答案 0 :(得分:0)
public static class Scenario_Uuid_transform extends Transformer<String> {
@Override
public String transform(String aString) {
if (aString.endsWith("_SCENARIO_UUID")) {
return Long.toString(System.currentTimeMillis());
// Or if you wanted foo_ prepended
// return aString.replaceFirst("SCENARIO_UUID", Long.toString(System.currentTimeMillis()));
else {
return aString;
}
}
}
@When("^I enter the name "([^"]*)" in serach text field$")
public void i_enter_someText_in_search_textField(@Transform(Scenario_Uuid_transform.class) String searckKey) throws Throwable {
pageCollection.searchPage().enterKeyword(searchKey);
}
请参阅Class Transformer以获取解释。