2013-11-14 5 views
0

У меня возникли проблемы с записью параметризованного теста с помощью Spock, когда одному параметру нужен символ трубы, например, потому что он вычисляет флаг.Параметрированные тесты Spock и использование труб

def "verify inferInputType()"() { 
     expect: 
     inputType == mPresenter.inferInputType(opt) 

     where: 
     opt      | inputType 
     0       | 0 
     EDITTEXT_TYPE_ALPHANUM  | InputType.TYPE_CLASS_TEXT 
     EDITTEXT_TYPE_NUM   | InputType.TYPE_CLASS_NUMBER 
     EDITTEXT_TYPE_FLOAT  | (InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL) 
} 

тест выдает следующее сообщение об ошибке:

Row in data table has wrong number of elements (3 instead of 2) @ line 25, column 9. 
      EDITTEXT_TYPE_FLOAT  | InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL 
     ^

Единственный способ, которым я нахожу, чтобы сделать его работу является обернуть параметр внутри закрытия, как тот

 EDITTEXT_TYPE_FLOAT  | {InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL}() 

Но это уродливо, если у кого-то есть лучшее решение, скажите, пожалуйста.

ответ

2

Вы должны быть в состоянии сделать:

InputType.TYPE_CLASS_NUMBER.or(InputType.TYPE_NUMBER_FLAG_DECIMAL) 

Не уверен, что это лучше ;-)

+0

это работает и на самом деле лучше, спасибо! – tbruyelle

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