当我在搜索文本字段中输入名称 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 中找不到任何此类选项来确保每次运行测试时它都会搜索新字符串:(
最佳答案
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以获得解释。
关于java - 在 Cucumber 步骤运行时将关键字解析为其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39707615/