我正在尝试创建一些单元测试,但我意识到我无法使用jmock模拟Pattern.class
。
我收到错误说
java.lang.IllegalArgumentException: java.util.regex.Pattern is not an interface
每次我尝试做这样的事情
final Pattern mockedPattern = mockery.mock(Pattern.class);
我在互联网上查看可能是因为这是一个单独的bean而无法模仿它。
是否有任何变通方法可以嘲笑它?或以任何方式测试它?
干杯。
EDIT ----
基本上,我使用了这个答案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);
}
答案 0 :(得分:1)
恕我直言,您应该模拟测试您发布的代码的请求,而不是Pattern
:
MockHttpServletRequest req1 = new MockHttpServletRequest("GET", "/foobar");
assertThat(theThing.matches(req1)).isFalse();
// ...