如何在mockito中确定Mock和injectMock对象?

问题描述 投票:1回答:1

我是Mockito框架的初学者,我在确定模拟和注入的模拟对象时遇到了一些问题,实际上我的项目中有以下结构。

//WebService Interface

Interface WebService{
    @Gateway(...)
    public x call1(parameters);
}

//Class that implements another interface

Class A implements interfaceA{

@Autowired
WebService WS;

    public void M1(){
    .....
        WS.call1(parameters);
    .....
    }

}

//Test Class
@Mock
@Autowired
WebService WS;

@InjectMock
@Autowired
A a;

@Before
setup(){
    MockitoAnnotations.initMocks(this);
}

@Test
@Rollback(true)
@Transactional
public void Test() {

    when(WS.call1(parameters)).thenReturn(x);
    actualResult = a.M1();
    assertNotNull(actualResult);
    verify(WS, Mockito.times(1)).call1(parameters);
}

是否正确选择了模拟和注入的模拟对象? 如果是,我会继续收到此异常消息:

通缉但未调用:WS.call1(........); 实际上,与这个模拟没有任何交互。

java spring unit-testing mockito
1个回答
0
投票

你正在使用@Mock@Autowired。这没有意义。您可以模拟或自动装配您的bean。删除自动装配

@Mock
WebService WS;

@InjectMock
A a;
© www.soinside.com 2019 - 2024. All rights reserved.