unit-testing - JMockit 模拟类为子方法返回 null
问题描述
我想测试一个从 JAX-RS 实现 ContainerRequestFilter 的过滤器。
实现类是:
public class CookieRequestFilter implements ContainerRequestFilter {
public static final String EXCLUDE_FROM_FILTER = ".*healthy$|.*alive$";
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
URI uri = requestContext.getUriInfo().getAbsolutePath();
if (uri.getPath().matches(EXCLUDE_FROM_FILTER)) {
return;
}
Cookie cookie = requestContext.getCookies().get("cookie_identifier");
// some other code here
}
}
单元测试使用 JMockit 框架运行。测试是:
@RunWith(JMockit.class)
public class CookieRequestFilterTest {
@Tested
private CookieRequestFilter cookieRequestFilter;
@Test
public void filterCookie(@Mocked ContainerRequestContext request) throws IOException {
Map<String, Cookie> cookies = new HashMap<>();
String identifier = "1";
cookies.put("cookie_identifier", getCookie(identifier));
new Expectations() {{
request.getCookies();
times = 1;
result = cookies;
}};
cookieRequestFilter.filter(request);
}
private NewCookie getCookie(String value) {
return new NewCookie("cookie_identifier",
value,
"/",
"",
1,
null,
840,
new Date(new Date().getTime() + 840 * 1000),
true,
false);
}
}
它给了我一个 NPE
uri.getPath().matches(EXCLUDE_FROM_FILTER)
有人可以帮我解决这个问题吗?
解决方案
推荐阅读
- node.js - 如何使用 JWT 为我的 Google Cloud Functions 实现 POST 请求
- mysql - Dbeaver 自动将字母放在我的查询后面
- jenkins - 从 Jenkins 控制台输出中提取错误描述
- android - 用户成功登录后需要 android 应用程序启动主要活动
- python - 所有元素在 Kivy + KivyMD 中渲染两次
- ios - 使用更长的字符串本地化 ios 应用程序
- java - 如何正确使用带有 libGDX 的 open gl 调用
- regex - Apache 配置文件中 JkUnMount 的正则表达式
- asp.net-core - Windows 服务器中 Startup.ConfigureServices(IServiceCollection 服务)的 System.NullReferenceException
- reactjs - 如何从 NavLink 获取类名或道具以在无状态功能组件中与带有 react 和 redux 的谷歌标签管理器一起使用?