所以我是Mockito新手测试外墙。所以基本上我想检查,如果一个服务方法被调用一次。
这是一个简化的例子
我的服务
public class Service {
public int myMethod(int index, int number) {
if (index<4){
index = index + number;
}
return index;
}
}
我的立面:
public class Facade {
private Service service;
public void method(){
int i = service.myMethod(4, 2);
}
}
最后我的测试:
public class FacadeTest {
@InjectMocks
private Facade classUnderTest;
@Mock (name="service")
private Service service;
@Before
public void setUp(){
MockitoAnnotations.initMocks(this);
}
@Test
public void test(){
verify(classUnderTest, times(1)).service.myMethod(4,2);
}
}
我知道可以在我的Facade中使用Getter / Setter方法来返回服务,但我想这样做,而不是这样做。
是否有可能以我想要的方式,不对Facade进行任何更改?
当我有一个Spring项目并在Facade中使用@Autowired作为服务变量时,是否有区别?
谢谢!
答案 0 :(得分:0)
使用@InjectMocks将在您的外观中注入带注释的@Mock服务。 因此,您不需要任何吸气剂或固定剂进行测试。
您似乎忘了在测试中调用方法。 试试这个:
@Test
public void test(){
classUnderTest.method();
verify(service, times(1)).service.myMethod(4,2);
}
在您的外观中使用@Autowired服务对您的测试没有影响,因为它没有使用spring。当你运行你的应用程序时,Spring会注入正确的bean。