为什么我的测试没有触发我的过滤器?

时间:2019-01-21 00:41:59

标签: java jersey jax-rs jersey-2.0 jersey-test-framework

我有以下问题。即使HttpHeaders.AUTHORIZATION标头使用了错误的令牌,我的测试也一直在运行。理论上,它应该失败,因为我有一个检查令牌的过滤器。 我的Jax-RS程序在浏览器中或使用邮递员之类的httpclient都能完美运行。因此,我必须先生成一个令牌,然后使用该令牌运行HTTP命令,否则它将返回状态码401。 我认为我的配置错误,并且Testframework在运行测试而不触发过滤器。 我以前从未与Jax-RS一起工作过,我也不知道如何解决该问题...

public class GamesTest extends JerseyTest{


@Override
protected Application configure() {
    return new ResourceConfig(Games.class).register(new AbstractBinder() {
        protected void configure() {
            bind(GamesXMLDB.class).to(MyGameDBInterfaceDB.class).in(Singleton.class);
            bind(UserXMLDB.class).to(MyUserInterfaceDB.class).in(Singleton.class);
        }
    });
}   


@Test
public void getWithoutTokenTest() {
    Response response = target("/games").request().header(HttpHeaders.AUTHORIZATION, "").get();
    assertEquals(200, response.getStatus());
}

}

1 个答案:

答案 0 :(得分:0)

我是个白痴,我不得不将filter.class添加到ResourceConfig中。我认为这不是必需的,因为它将通过注释找到过滤器。