2012-01-11 2 views
0

В JBehave 3 примеров можно увидеть параметры, как «двойной», так что я пытался использовать другие типы, кроме строки, но когда я пытаюсь добавить булево значение, как этотJBehave булевых именованный параметр

public void theUserShouldBeRedirectedToHomePage(@Named("should?") boolean should) 

I получить ошибку типа аргумент:

java.lang.IllegalArgumentException: argument type mismatch 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.jbehave.scenario.steps.CandidateStep$1.perform(CandidateStep.java:225) 
    at org.jbehave.scenario.ScenarioRunner$FineSoFar.run(ScenarioRunner.java:112) 

(также, я использую версию 2.3, а не 3 из JBehave)

это проблема с моей JBehave версии? который является правильным способом использования логического параметра?

ответ

1

Я тоже этого пытаюсь. Для параметра boolean/Boolean отсутствует параметр ParameterConverter по умолчанию. Вы можете легко добавить его.

http://jbehave.org/reference/stable/parameter-converters.html

+0

Это довольно неудачно, потому что логический тип, по-видимому, отлично сопоставляется с его строковым символом. Надеюсь, они сделают это конвертером по умолчанию в следующей версии – vandershraaf

0

Если вы пройдете этот параметр другого метода в любом случае, иногда проще сделать так:

общественного недействительного theUserShouldBeRedirectedToHomePage (@Named ("надо?") Строки должны) {

myNextMethod (Boolean.valueOf (обязательно)); }

0

Jbehave версия 3 хорошо работает с булевым. В следующем примере он отлично работает в моем коде.

@Then("I verify the response has _success as $_success and _warning as $_warning and _info as $_info and _messages as $_messages") 
      public void pidOrPidColorDeleteResponse(
        @Named("_success") Boolean _success, 
        @Named("_warning") Boolean _warning, 
        @Named("_info") Boolean _info, 
        @Named("_messages") List<String> _messages) { 

      } 

С Jbehave Version 2 необходимо проверить.

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