黄瓜中的日期对象
Posted
技术标签:
【中文标题】黄瓜中的日期对象【英文标题】:Date object in Cucumber 【发布时间】:2017-03-03 00:03:05 【问题描述】:我有一个像这样的黄瓜 stepdef
Given the date of <date>
When blah blah
Then x y and z
Examples:
|2015-01-01|
|2045-01-01|
当我由此生成 stepdefs 时,我得到 @Given("^the date of (\\d+)-(\\d+)-(\\d+)$")
该方法以三个整数作为参数生成。
如何告诉 Cucumber 将其视为 Java.Time LocalDate?有没有办法创建 Cucumber 可以理解的映射器?或者至少,有没有办法将该日期对象视为字符串而不是三个数字?
【问题讨论】:
【参考方案1】:修改您的步骤定义以接受整个日期的字符串。也许使用 (.*?) 之类的东西而不是 3 个整数。
@Given("^the date of (.*?)$")
public void storeDate(@Transform(DateMapper.class) LocalDate date)
变压器类
public class DateMapper extends Transformer<LocalDate>
@Override
public LocalDate transform(String date)
//Not too sure about the date pattern though, check it out if it gives correct result
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
return LocalDate.parse(date, formatter);
Cucumber 应该为您将字符串格式转换为日期对象
【讨论】:
我仍然得到@Given("^the date of (\\d+)-(\\d+)-(\\d+)$") 并且该方法是用三个整数作为参数生成的.我如何告诉 Cucumber 处理错误 您正在使用黄瓜生成的默认方法 stepdef 模式和参数。将其编辑为您希望将数据导入方法的字符串模式和参数。【参考方案2】:请检查这是否有效 -
Scenario Outline: Date
Given the date of <date>
When blah blah
Then x y and z
Examples:
|date |
|2015-01-01|
|2045-01-01|
我已经像这样修改了默认步骤定义 -
@Given("^the date of (.*?)$")
public void the_date_of(String strDate) throws Throwable
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date date = format.parse(strDate);
System.out.println(date);
这样打印代码 -
Thu Jan 01 00:00:00 AEDT 2015
Sun Jan 01 00:00:00 AEDT 2045
【讨论】:
仍然得到@Given("^(\\d+)-(\\d+)-(\\d+)$") 的日期,并以三个整数为参数生成方法。我如何告诉 Cucumber 处理错误【参考方案3】:使用 Cucumber 7,我正在定义一个新的 @ParameterType
:
@ParameterType("\\d2\\.\\d2\\.\\d4")
public LocalDate mydate(String dateString)
return LocalDate.parse(dateString, DateTimeFormatter.ofPattern("dd.MM.yyyy"));
然后我可以使用步骤定义@Given
如:
@Given("person has birthdate mydate")
public void person_birthdate(LocalDate birthDate)
... // do something
占位符名称mydate
是映射方法的名称,但可以通过@ParameterType.name
覆盖。
【讨论】:
以上是关于黄瓜中的日期对象的主要内容,如果未能解决你的问题,请参考以下文章