今天在与Mockito和春天合作的时候,我对这个场景很感兴趣,
public class MyClass {
private MyService myService;
int doSomethingElse(String str) {
.....
myService.doSomething(str);
...
}
}
public interface MyService {
String doSomething(String str);
}
public class Class1 {
private MyClass myClass;
public Stirng methodToBeTested() {
myClass.doSomethingElse("..");
}
}
public class class1Test {
@Mock
MyService myService;
@Resource
@Spy
@InjectMocks
MyClass myClass;
@Resource
@InjectMocks
Class1 class1;
public void setUPTest() {
MockitoAnnotations.initMocks(this);
}
@Test
public void methodToBeTestedTest() {
this.setUPTest();
...
class1.methodToBeTested();
}
}
这里我想模仿“MyService”。但MyService用于“MyClass”,它用于“Class1”。
我想使用spring初始化“MyClass”和“Class1”。
当我尝试运行此测试时,我得到以下异常
org.mockito.exceptions.base.MockitoException: 不能模拟/间谍类$ Proxy79 Mockito不能嘲笑/间谍: - 最后的课程 - 匿名课程 - 原始类型
任何人都可以帮我吗?
答案 0 :(得分:1)
您正在测试Class1
,它只有MyClass
作为依赖项。 MyService
与此测试无关。您应该模拟MyClass
并测试对doSomethingElse
的调用。
如果您希望测试doSomething
MyService
的来电,则应编写一个MyClassTest
,将依赖关系模仿MyService
。