java - 为什么我的测试没有触发我的过滤器?
问题描述
我有以下问题。即使 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());
}
}
解决方案
我是个白痴,我不得不将 filter.class 添加到 ResourceConfig。我认为这不是必需的,因为它会通过注释找到过滤器。
推荐阅读
- javascript - 在哪里可以找到 Dialogflow javascript 函数文档?
- php - 如果用户名已经存在,如何将数字添加到用户名
- javascript - 如何使 Javascript 控制台评估表达式?
- regex - Scala正则表达式不起作用
- python - Tkinter 滚动列表框
- reactjs - ReactJs:textArea的默认值未更新
- android-studio - 如何在颤振中使用 sha256 哈希密码?
- angular - Jimp loadFont 和 getBase64
- oracle - ORACLE - NLS_LANG、字符集、特殊字符
- python - 如何根据包含特定值的行(在任何列中)过滤数据框