Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 莫基托例外_Java_Exception_Junit_Mockito - Fatal编程技术网

Java 莫基托例外

Java 莫基托例外,java,exception,junit,mockito,Java,Exception,Junit,Mockito,有一个测试代码是thorws异常的,我无法理解-为什么 例外情况: org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 测试代码: @Test public void testUpdateBookingFormData() throws Exception { when(registrantFormService.getRegistrantFormByUUID(any(String.c

有一个测试代码是thorws异常的,我无法理解-为什么

例外情况:

    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:完整代码

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)

异常将我们指向第
106行。但这条线有两个匹配者,而例外情况是有三个匹配者。但是,下一个非空行,行
108
很奇怪:它包括没有
when()
调用的匹配器。您可以尝试使用实际值调用它,如下所示:

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

您可以稍后使用更具体的数据为该测试提供数据。

您是如何创建模拟对象的?@BilboBaggins好吧,我正在将我的所有代码添加到该测试中,完全例外是什么?也就是说,哪一行是有问题的?请指出哪一行抛出异常、完整的异常消息以及引用测试类的堆栈跟踪行;否则,很难调试。另外,请检查当
用于非最终方法时,您对
的每次调用中的方法调用是否是针对非最终方法的,因为任何最终方法都不会被模拟,相反,它们的匹配器将导致InvalidUseOfMatchersException。您打算如何处理此代码<代码>BookingFormsCollectionBean BookingFormsCollectionBean=bookingFormsService.updateBookingFormData(eq(booking.getKey().getVisitorId()),anyString(),anyMapOf(String.class,String[].class))