我是jmock的新手,正在尝试模拟HttpSession。我正进入(状态:
java.lang.AssertionError:意外调用:httpServletRequest.getSession()
没有指定期望:您是否...
-忘记使用基数子句开始期望了吗?
-调用模拟方法来指定期望参数?
测试方法:
@测试
public void testDoAuthorization(){
final HttpServletRequest request = context.mock(HttpServletRequest.class);
final HttpSession session = request.getSession();
context.checking(new Expectations(){{
one(request).getSession(true); will(returnValue(session));
}});
assertTrue(dwnLoadCel.doAuthorization(session));
}
我已经做了一些搜索,但我仍然不清楚这是如何完成的。感觉就像我缺少了一些小东西。任何有经验的人都可以为我指明正确的方向。
谢谢
最佳答案
您不需要模拟请求对象。由于您要测试的方法(dwnLoadCel.doAuthorization()
)仅依赖于HttpSession
对象,因此应进行模拟。因此,您的代码如下所示:
public void testDoAuthorization(){
final HttpSession session = context.mock(HttpSession.class);
context.checking(new Expectations(){{
// ???
}});
assertTrue(dwnLoadCel.doAuthorization(session));
}
问题就变成了:您期望SUT对会话对象实际做什么?您需要在期望中表达对
session
的调用及其相应的返回值,这些调用应导致doAuthorization
返回true
。