2017-01-17 7 views
1

Что это самый простой способ сделать это без изменения класса данных?Принудительный огурец, чтобы не вызвать неправильный конструктор для DataTable

Feature: My feature 
    Scenario: My Scenario 
    Given some data table: 
     | a | b | c | 
     | | true | true | 

public class MySteps { 
    @Given("^some data table:$") 
public void some_data_table (
    final List<ThirdPartyEntity> rows) throws Throwable { 
     for (ThirdPartyEntity row : rows) { 
      // I get 6 rows here :(
     } 
    } 
} 

public class ThirdPartyEntity extends ... { 
    private String a; 
    private boolean b; 
    private boolean c; 

    public SpecificBenefitRuleRequest() { 
     this("x"); 
    } 

    public SpecificBenefitRuleRequest(String x) { 
     super(x); // cucumber calls this, but I don't want it to :(
    } 
// getters and setters for a,b,c 
} 

ответ

2

Лучший способом я нашел, чтобы скрыть конструктор, которые я не хочу называть огурец переопределения сущности в моем тестовом классе:

public class MySteps { 
    @Given("^some data table:$") 
    public void some_data_table (
     final List<ThirdPartyEntityCucumberHatesMe> rows) throws Throwable { 
      for (ThirdPartyEntityCucumberHatesMe row : rows) { 
       // I get 1 rows here \o/ 
      } 
     } 
    } 

    public static class ThirdPartyEntityCucumberHatesMe extends ThirdPartyEntity { 
     // this was the easiest way to get cucumber to not call the wrong constructor :'(
    } 
}