我正在尝试对我的班级进行单元测试 这看起来像是: -
class A{
private void method1(){
B b=new B();
C c=b.method2();
if(c!=null){
...
...
}
}
}
我想在B类中模拟“method2()”。 我知道我们需要有一个B()的模拟对象,这样每当我们调用一个方法时就会发生模拟。 这就是我试过的
A aMock=Easymock.createNiceMock(A.class);
B bMock=Easymock.createNiceMock(B.class);
Powermock.expectNew(B.class).andReturn(bMock).anyTimes();
Easymock.expect(bMock.method2()).andReturn(new C()).anyTimes();
//have done all the replays and verifies
并使用aMock.method1()
调用它,
现在主要的问题是method2被模拟(即method2()的主体没有被执行)但是我无法接收C的对象作为响应。
我的测试场景是: -
我想测试A类的method1(),它反过来调用B类的method2(),但我不希望它执行它的代码(方法2()),因为它是一个DB调用,我也需要方法2()返回的C的对象,所以我使用mocking来实现这一点。
答案 0 :(得分:0)
如果您要测试类method1()
的{{1}},那么您不应该创建A
的模拟。这意味着你不应该做A
对于您的测试场景,测试类似于:
A aMock=Easymock.createNiceMock(A.class);
您可以按照文档here。
进行操作