比較的簡単なテストを行いたい。テストされるクラス (簡略化されていますが、アイデアは得られます):
@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 をテストする方法はありますか?
言い換えれば、この Bean を生成するテストを介して http 要求を呼び出すにはどうすればよいでしょうか。ただし、jsf ファイルなどを配置する必要はありません。
ヘルプ/提案をありがとう。