我使用了restassured 2.9.0,测试xml的行为与测试xml的行为不同。我有一个服务器返回此表单的xml:
<foo-fee bar="123">
<baz>456</baz>
</foo>
我想用restassured来测试它。这有效:
given()
.port(8080)
.get("/endpoint")
.then()
.log().body()
.contentType(XML)
.assertThat()
.body( "foo-fee.@bar", equalTo("123"),
"foo-fee.baz",equalTo("456"),
)
.statusCode(200)
;
但是返回123&amp; 456作为字符串。我真正想做的是将它们视为数字,以便我可以做这样的事情(请注意123在上面的引号中,但不在这里):
.body( "foo-fee.@bar", equalTo(123),
"foo-fee.baz", both(greaterThan(400)).and(lessThan(500),
)
我以为我可以这样做:
.body( "number(foo-fee.@bar)", equalTo(123),
"number(foo-fee.baz)", both(greaterThan(400)).and(lessThan(500))
)
我已经尝试了
.body( "number(foo-fee/@bar)", equalTo(123),
"number(foo-fee/baz)", both(greaterThan(400)).and(lessThan(500))
)
.body( "foo-fee.number(@bar)", equalTo(123),
"foo-fee.number(baz)", both(greaterThan(400)).and(lessThan(500))
)
.body( "foo-fee.@bar.number", equalTo(123),
"foo-fee.baz.number", both(greaterThan(400)).and(lessThan(500))
)
和许多其他人。
我错过了什么?我该怎么做呢?我用谷歌搜索了我能想到的一切,但还没有任何工作。
FWIW,当测试json数字作为数字返回时,我可以理解123,但不能理解456.我无法弄清楚如何转换......
感谢大家的时间和专长。
答案 0 :(得分:1)
使用toInteger():
.body("foo-fee.@bar.toInteger()", equalTo(123),
"foo-fee.baz.toInteger()", both(greaterThan(400)).and(lessThan(500))
)