Mockito:注入模拟SessionContext

时间:2013-06-24 19:27:38

标签: java tdd ejb-3.0 mockito

使用Mockito测试EJB3。我试图弄清楚如何在不改变访问权限的情况下注入模拟SessionContext。

SessionContext通过@Resource注入,如下所示:

@Resource
protected void setSessionContext(SessionContext sessionContext)
{
    this.sessionContext = sessionContext;
}

我确实阅读了以下答案,说明如何使用jmockit执行此操作:Mock injected SessionContext

有没有办法在Mockito做同样的事情?

另外,我阅读了以下关于Mockito和私有成员变量的答案,这些变量暗示代码应该被重构(setter方法或构造函数参数): https://stackoverflow.com/a/8995712

setSessionContext更改为public感觉错误,更改应用程序代码,以便在SessionContext确实无法在EJB及其后代之外进行设置时使用模拟框架使其可测试。

如果有人有任何想法或建议,我将不胜感激。先感谢您。 : - )

1 个答案:

答案 0 :(得分:0)

您可以使用Whitebox.setInternalState,它使用反射在对象中分配变量。

Whitebox.setInternalState(target, field, value)

目标 - 目标对象
field - 字段的字符串名称,在您的情况下为“sessionContext” value - 模拟SessionContext。