我想做一个比较简单的测试。正在测试的类(简化但你明白了):
@Named
@RequestScoped
public class SomeController {
@Inject
@RequestParam("someId")
Long someId;
public SomeClass getSomeClass() {
return new SomeClass(someId);
}
}
和测试:
@RunWith(Arquillian.class)
public class SomeControllerTest {
@Inject
private SomeController controller;
@Deployment
public static Archive<?> createTestArchive() throws IOException {
// trimmed out
}
@Test
public void testNullGoalModelInjection() {
//placeholder test so there are no errors during build
// I am happy to use setter injection and do
controller.setSomeId(1);
// even better if I could get that injected in too
assertNotNull(controller.getSomeClass());
}
}
在尝试中,我得到了例外:
java.lang.IllegalStateException: Attempted to inject an HttpServletRequest before it has been initialized.
这是有道理的。
我真正想知道的是:
有没有办法通过 Arquillian(或其他东西)测试这样的 bean,而不涉及创建 jsf 页面,然后使用 jsfunit / warp / 或其他一些机制来调用 http 请求?
换句话说,我如何通过测试调用 http 请求,这将为我生成这个 bean - 但不需要 jsf 文件等就位。
感谢您的任何帮助/建议。