2016-10-20 2 views
0

У меня есть огуречный stepdef как этотобъект Дата в Cucumber

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? Есть ли способ создать картограф, который поймет Огурец? Или, по крайней мере, есть способ обработать этот объект даты как строку вместо трех чисел?

ответ

3

Измените определение шага на строку в течение всей даты. Может быть, использовать что-то вроде (. *?) Вместо 3 целых чисел.

@Given("^the date of (.*?)$") 
public void storeDate(@Transform(DateMapper.class) LocalDate date){ 

} 

класс Transformer

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); 
    } 

} 

Огурцы должны преобразовать формат строки в объект даты для вас

+0

я все еще получаю @Given ("^ дата (\\ d +) - (\\ d +) - (\\ d +) $") И метод генерируется с тремя целыми числами в качестве параметров. Как я могу указать Cucumber на ошибку trea –

+0

Вы используете шаблон stepdef по умолчанию и аргументы, созданные огурцом. Измените его на шаблон строки и аргумент, который вы хотите получить в этом методе. – Grasshopper

1

Пожалуйста, проверьте, работает ли это -

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 
+0

все еще получает @Given ("^ дата (\\ d +) - (\\ d +) - (\\ d +) $") И метод генерируется с тремя целыми числами в качестве параметров. Как я могу сказать огуречную ошибку trea –

Смежные вопросы