我有一个类从另一个类调用方法来获取报告状态。
Class A {
private classb b = new classb();
method x() {
String xyz =b.method1( parm1, parm2)
}
}
因此,当Junit测试方法x时,在b.method()上获取空指针。我已经为b类创建了mock并且遵循了
Mockito.doReturn(val).when(classbMock).method1(parm1,parm2);
请帮助我如何模拟课程b并通过它。
由于
答案 0 :(得分:2)
为了模仿b
,您需要将其提供给A类的实例。
至少有几种方法可以做到这一点:
A
提供一个构造函数,允许您将依赖项注入A
A.x
并假设b
有效(因为它有自己的单元测试)我更喜欢选项3(假设A是被测事物的依赖而不是被测试的东西)。对于单元测试,我只想模拟直接的依赖关系,而不是所有的瞬态依赖关系。
答案 1 :(得分:0)
而不是ClassA实例化它自己的ClassB实例,而是在via A的构造函数(或setter)中传递B的实例:
public class ClassA {
public ClassA(ClassB b) {
this.b = b;
}
public void x() {
String blah = b.method1(parm1, parm2);
}
}
然后在测试中,您可以将B的模拟版本传递给正在测试的A的实例:
ClassB classBMock = mock(ClassB.class);
ClassA a = new ClassA(classBMock);
您的真实代码可以将ClassB的非模拟版本传递给A。