gpt4 book ai didi

java - 为什么不能在 jmock 中模拟 Pattern.class ?

转载 作者:行者123 更新时间:2023-12-01 09:08:58 25 4
gpt4 key购买 nike

我正在尝试创建一些单元测试,但我意识到我无法使用 jmock 模拟 Pattern.class

我收到一条错误消息

java.lang.IllegalArgumentException: java.util.regex.Pattern is not an interface

每次我尝试做这样的事情

final Pattern mockedPattern = mockery.mock(Pattern.class);

在网上查了一下,我看到可能是因为这是一个单例 bean,没有办法模拟它。

有什么解决方法可以模拟它吗?或者有什么方法可以测试一下吗?

干杯。

编辑----

基本上,我使用了这个答案How to disable CSRF in Spring Security 4 only for specific URL pattern through XML configuration?它工作得很好,但我需要为其创建单元测试

 private Pattern allowedMethods = Pattern.compile("^(GET|HEAD|TRACE|OPTIONS)$");
private RegexRequestMatcher unprotectedMatcher = new RegexRequestMatcher("/ext/**", null);

@Override
public boolean matches(HttpServletRequest request) {
if(allowedMethods.matcher(request.getMethod()).matches()){
return false;
}
return !unprotectedMatcher.matches(request);
}

最佳答案

恕我直言,您应该模拟请求来测试您发布的代码,而不是Pattern:

MockHttpServletRequest req1 = new MockHttpServletRequest("GET", "/foobar");
assertThat(theThing.matches(req1)).isFalse();
// ...

参见MockHttpServletRequest

关于java - 为什么不能在 jmock 中模拟 Pattern.class ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41045795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com