2016-05-24 2 views
1

Существует тестовый код, который является исключением, и я не могу понять - почему?Исключение Mockito

Исключение:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 

Код испытания:

@Test 
    public void testUpdateBookingFormData() throws Exception { 
     when(registrantFormService.getRegistrantFormByUUID(any(String.class))).thenReturn(registrantForm); 
     when(bookingService.getById(any(Long.class))).thenReturn(booking); 
     when(eventFieldRepository.findByEventIdOrderBySortIndexAsc(any(Long.class))).thenReturn(eventFieldList); 
     when(registrantAggregateService.getRegistrantDataAggregate(any(RegistrantKey.class))).thenReturn(registrantAggregate); 
     when(bookingFormStrategiesFactory.chooseStrategy(any(Long.class))).thenReturn(bookingFormStrategy); 
     when(bookingFormValidatorsFactory.getValidatorForForm(any(Booking.class))).thenReturn(validator); 
     when(validator.validate(any(BookingFormBean.class))).thenReturn(true); 
     when(bookingFormStrategy.getFormByKey(any(Booking.class), any(RegistrantKey.class))).thenReturn(bookingFormBean); 

     BookingFormsCollectionBean bookingFormsCollectionBean = bookingFormsService.updateBookingFormData(eq(booking.getKey().getVisitorId()), anyString(), anyMapOf(String.class, String[].class)); 

     assertThat(bookingFormsCollectionBean, is(IsNull.notNullValue())); 
    } 

Что я делаю неправильно?

UPD: Полный код http://pastebin.com/rprLG8Nt

UPD2: Это полное сообщение об исключении:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers! 
1 matchers expected, 3 recorded: 
-> at com.evm.front.service.logic.bookingprocess.BookingFormsServiceTest.testUpdateBookingFormData(BookingFormsServiceTest.java:106) 
-> at com.evm.front.service.logic.bookingprocess.BookingFormsServiceTest.testUpdateBookingFormData(BookingFormsServiceTest.java:106) 
-> at com.evm.front.service.logic.bookingprocess.BookingFormsServiceTest.testUpdateBookingFormData(BookingFormsServiceTest.java:106) 

This exception may occur if matchers are combined with raw values: 
    //incorrect: 
    someMethod(anyObject(), "raw String"); 
When using matchers, all arguments have to be provided by matchers. 
For example: 
    //correct: 
    someMethod(anyObject(), eq("String by matcher")); 

For more info see javadoc for Matchers class. 


    at com.evm.front.service.logic.bookingprocess.BookingFormsService.updateBookingFormData(BookingFormsService.java:202) 
    at com.evm.front.service.logic.bookingprocess.BookingFormsServiceTest.testUpdateBookingFormData(BookingFormsServiceTest.java:106) 
    at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37) 
    at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62) 
+0

Как вы создаете макет объектов? –

+0

@BilboBaggins хорошо, я добавляю весь свой код в это http://pastebin.com/rprLG8Nt –

+0

В чем полное исключение? То есть какая линия является проблематичной? –

ответ

1

Исключение указывает нам на линию 106. Но эта линия имеет два ответвителя, в то время как исключение жалуется на три. Однако следующая непустая строка, строка 108 странная: она включает в себя совпадения без вызова when(). Вы можете попытаться вызвать его с фактическими значениями примерно так:

BookingFormsCollectionBean bookingFormsCollectionBean = bookingFormsService. 
    updateBookingFormData(booking.getKey().getVisitorId(), "salala", Collections.EMPTY_MAP); 

Вы можете использовать более конкретные данные для подачи этого теста.

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