Mockito: Inject mock SessionContext



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

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

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

我确实阅读了以下答案,展示了如何使用jmockit做到这一点:Mock注入的SessionContext

莫基托也有同样的方法吗?

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

setSessionContext更改为public感觉是错误的,当SessionContext真的不应该在EJB及其子代之外设置时,更改应用程序代码以使其可以使用模拟框架进行测试。

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

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

Whitebox.setInternalState(target, field, value)

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

相关内容

  • 没有找到相关文章