我在Spring Boot中有一个依赖项,该依赖项是从类中调用的。此依赖关系以新实例化的构建器模式类作为参数进行调用。我需要知道在进行依赖调用时是否可以验证此单个生成器类是否使用某些值构造,例如:

public class MyClass {

  @Autowired
  private MyDep myDep;

  public void callMyDepService() {
    myDep.serviceCall(new MyBuilder().paramOne("One").paramTwo("Two").build());
  }

}


如您所见,每次都会实例化一个新的MyBuilder,所以我不能仅使用Mockito的eq()来匹配参数的值。

最佳答案

我想确保callMyDepService使用某些参数值调用myDep.serviceCall。


使用捕获器似乎是最简单的方法。
诸如此类,其中SomeClass是您的MyBuilder构建的类。

@ExtendWith(MockitoExtension.class)
public class CaptureTest {

    @InjectMocks
    MyClass classUnderTest;

    @Mock
    MyDep myDep;

    @Test
    public void test() {

        classUnderTest.callMyDepService();

        Captor<SomeClass> captor = ArgumentCaptor.forClass(SomeClass.class);
        Mockito.verify(myDep).serviceCall(captor.capture());

        SomeClass parameter = captor.getValue();
        // do assertions
    }
}

10-04 10:46