我有以下验证,我必须检查返回的body是否包含一个包含"id": 6354
的字符串,但它解释了特殊字符的斜杠。我如何验证包含双引号的字符串?
代码
import static org.hamcrest.Matchers.containsString;
import com.jayway.restassured.response.Response;
response.then()
.body(containsString("\"id\": 6354"));
错误
Response body doesn't match expectation.
Expected: a string containing "\"id\": 6354"
Actual: {...,"id": 6354, ...}
答案 0 :(得分:1)
我认为逃避斜线有问题。所以我用过:
assertTrue(response.contains("\"id\":6354"));
答案 1 :(得分:1)
Hamcrest containsString似乎在输出错误消息中打印转义的字符,但是在进行匹配时似乎正确地转义了它们。
在我的示例中,我错误地添加了空格,因此请遵循问题中的示例:
"id": 6354
会给出错误Expected: a string containing "\"id\": 6354"
,但是当我将其更改为"id":6354"
时,它通过了断言。
答案 2 :(得分:0)
我有一个类似看似令人困惑的问题,但解决方案很简单。我正在将非String对象与String进行比较,因此失败了。之所以引起混淆,是因为非String对象的描述看起来像没有转义字符的String。
为了解决这个问题,我改变了:
assertThat(message, is(expectedLog));
为:
assertThat(message.toString(), is(expectedLog));