Java 如何使用rest-assured将头位置响应与正则表达式匹配
我正在使用testng进行一个测试url重定向的放心测试。我想匹配头位置响应以匹配正则表达式 我试图创建以下方法,但我没有找到任何使用Hamcrest matcher的正则表达式匹配器。我想使用一些方法,如方法中使用的匹配(或任何其他选项)Java 如何使用rest-assured将头位置响应与正则表达式匹配,java,regex,rest,hamcrest,rest-assured,Java,Regex,Rest,Hamcrest,Rest Assured,我正在使用testng进行一个测试url重定向的放心测试。我想匹配头位置响应以匹配正则表达式 我试图创建以下方法,但我没有找到任何使用Hamcrest matcher的正则表达式匹配器。我想使用一些方法,如方法中使用的匹配(或任何其他选项) public Response matchRedirect(String url, Integer statusCode, String urlRegex) { return given().
public Response matchRedirect(String url, Integer statusCode, String urlRegex) {
return
given().
redirects().follow(false).and().redirects().max(0).
expect().
statusCode(statusCode).
header("Location", **matches**(urlRegex)).
when().get(url);
}
我从使用类到使用我的方法
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
public class RegexMatcher extends BaseMatcher<Object>{
private final String regex;
public RegexMatcher(String regex){
this.regex = regex;
}
public boolean matches(Object o){
return ((String)o).matches(regex);
}
public void describeTo(Description description){
description.appendText("matches regex=");
}
public static RegexMatcher matches(String regex){
return new RegexMatcher(regex);
}
}
import org.hamcrest.BaseMatcher;
导入org.hamcrest.Description;
公共类RegexMatcher扩展了BaseMatcher{
私有最终字符串正则表达式;
公共正则表达式匹配器(字符串正则表达式){
this.regex=regex;
}
公共布尔匹配(对象o){
返回((字符串)o).matches(正则表达式);
}
公共无效说明(说明){
description.appendText(“matches regex=”);
}
公共静态RegexMatcher匹配(字符串regex){
返回新的RegexMatcher(regex);
}
}
您可以创建自定义匹配器:
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
public class CustomMatchers {
public static Matcher<String> matchesRegex(final String regex) {
return new BaseMatcher<String>() {
public boolean matches(final Object item) {
return ((String) item).matches(regex);
}
public void describeTo(final Description description) {
description.appendText("should match regex: " + regex);
}
};
}
}
尝试匹配模式(urlRegex)
。看见也许,这会有所帮助。
public Response matchRedirect(String url, Integer statusCode, String urlRegex) {
return
given().
redirects().follow(false).and().redirects().max(0).
expect().
statusCode(statusCode).
header("Location", CustomMatchers.matchesRegex(urlRegex)).
when().get(url);
}