单元测试SessionScoped类

时间:2016-04-17 20:00:35

标签: guice

我正在使用Guice 4,我有一个课程,我希望在http会话级别设置范围,所以我用 @SessionScoped 装饰它。问题是,当我对这个类进行单元测试时,我得到以下异常。我不知道如何在我的测试中模仿这一点。

com.google.inject.CreationException: Unable to create injector, see the following errors:

1) No scope is bound to com.google.inject.servlet.SessionScoped.
  at org.abc.collab.repo.SessionedUOW.class(SessionedUOW.java:12)
  at org.abc.business.BusinessModule.configure(BusinessModule.java:18)

1 个答案:

答案 0 :(得分:2)

看起来你只是部分地使用了Guice:你已经连接了你的类,但没有它需要的范围绑定(调用bindScope)。

通常,您不应该在单元测试中使用真正的Guice注入器;相反,使用其构造函数实例化您的类并自己提供其依赖项(根据需要使用伪造或模拟)。

如果您确实需要使用Guice,请预先警告这不再是单元测试,现在更像是系统测试集成测试。此时,您需要诊断对所需的bindScope的调用,并考虑将其提取到测试帮助程序中,以使其余的测试更容易。