0

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

SessionContext 通过@Resource如下方式注入:

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

我确实阅读了以下答案,展示了如何使用 jmockit 执行此操作:模拟注入 SessionContext

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

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

更改setSessionContext为 public 感觉不对,更改应用程序代码以使其可以使用模拟框架进行测试,而SessionContext实际上不应该在 EJB 及其后代之外进行设置。

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

4

1 回答 1

0

您可以使用 Whitebox.setInternalState,它使用反射来分配对象内的变量。

Whitebox.setInternalState(target, field, value)

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

于 2013-06-24T20:29:24.180 回答