0

我想做一个比较简单的测试。正在测试的类(简化但你明白了):

@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 文件等就位。

感谢您的任何帮助/建议。

4

1 回答 1

1

JBossAS7 使用通过 JMX 调用测试的 Arquillian 协议,因此根本没有 HttpRequest 可用。

尝试更改与 JBossAS7 交互时使用的协议,如下所述: https ://community.jboss.org/message/722871#722871

现在测试通过 HTTP 调用到 servlet,并且您的测试应该运行。

于 2012-11-02T09:49:13.357 回答