我有一个我正在测试的类,它有一个来自另一个类的方法,我试图存根,以便它跳过它所做的并返回一个假对象
class Service{
CacheClass cache;
CacheFactory factory;
public String getString(){
cache = factory.create();
...}
工厂创建连接到数据库,我想跳过这一步;我的测试看起来像这样
@Before
public void setup(){
cache = mock(CacheClass.class);
factory = mock(CacheFactory.class);
when(factory.create()).thenReturn(cache);
}
@Test
public void testGetString(){
service = new Service();
String s = service.getString();
...}
当我尝试运行此测试时。它试图连接到数据库,但我不希望它。
我做错了什么?
答案 0 :(得分:1)
下面:
service = new Service();
这并不会将您模拟的对象注入到该服务实例中。
您可能需要以下内容:
service = new Service(mockedCache, mockedFactory);
还有这个注释:
@InjectMocks
Service service;
你可以使用mockito自动执行;但不幸的是,这种结构在注入失败时不会给你一个错误。因此,简单地做类似的事情:
Servce underTest;
@Before
public void setup() {
underTest = new Service(....