0

今天在与 Mockito 和 spring 一起工作时,我对这种情况感到震惊,

    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 无法模拟/监视以下:-最终类-匿名类-原始类型

谁能帮我这个?

4

1 回答 1

1

你正在测试Class1,它只有MyClassas 依赖。MyService与本次测试无关。您应该模拟MyClass和测试对doSomethingElse.

如果你想测试对doSomethingof的调用MyService,你应该写一个MyClassTest模拟对的依赖MyService

于 2013-03-22T07:38:58.927 回答