man*_*_nz 2 java junit unit-testing jmockit jmock
我有一个Handler.java类
它有2个公共方法update(),fetch()
在实际的update()实现中,我调用了public方法fetch()
fetch()依次调用服务.
所以现在我必须编写一个testUpdate()来模拟公共方法调用,即fetch()
由于它不是静态的,我尝试创建另一个Handler.java实例作为模拟,即,
private Handler handler;
@Mocked
private Handler mockedHandler;
Run Code Online (Sandbox Code Playgroud)
现在使用mockedHandler,我在testUpdate()中设置以下代码
new NonStrictExpectations(){
mockedHandler.fetch();
returns(response);
};
handler.update();
Run Code Online (Sandbox Code Playgroud)
现在,我希望mockedhandler用于调用fetch()和调用update()的处理程序实例.
但是当我运行实际的方法调用update()时也被嘲笑!!!
i.e. handler.update(); is not at all going to the update().
Run Code Online (Sandbox Code Playgroud)
帮我模拟我在update()中调用的第二个公共方法
谢谢
听起来你应该嘲笑从内部调用的服务类Handler#fetch(),而不是模拟fetch()方法.
无论如何,嘲笑一个类的一些方法而不嘲笑其他方法被称为部分嘲弄.在JMockit中,您通常会使用NonStrictExpectations(Object...)构造函数,如下面的示例测试:
@Test
public void handlerFetchesSomethingOnUpdate()
{
final Handler handler = new Handler();
new NonStrictExpectations(handler) {{
handler.fetch(); result = response;
}};
handler.update();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7906 次 |
| 最近记录: |