Java JsonPathResultMatchers无法成功验证响应
为什么JsonPathResultMatchers无法成功验证响应? 测试Java JsonPathResultMatchers无法成功验证响应,java,junit,integration-testing,Java,Junit,Integration Testing,为什么JsonPathResultMatchers无法成功验证响应? 测试 private static final UUID TRANSACTION_UUID_ONE = UUID.fromString("336ca9de-1583-4f39-9c67-f8380323d09d"); restBalanceMockMvc.perform(put("/api/balance") .contentType(TestUtil.APPLICATION_JSON_UTF8)
private static final UUID TRANSACTION_UUID_ONE = UUID.fromString("336ca9de-1583-4f39-9c67-f8380323d09d");
restBalanceMockMvc.perform(put("/api/balance")
.contentType(TestUtil.APPLICATION_JSON_UTF8)
.content(TestUtil.convertObjectToJsonBytes(transaction)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.transactionId").value(hasItem(TRANSACTION_UUID_ONE.toString())))
.andExpect(jsonPath("$.errorCode").value(hasItem("")))
.andExpect(jsonPath("$.balanceVersion").value(hasItem(UPDATED_BALANCE_VERSION)))
.andExpect(jsonPath("$.balanceChange").value(hasItem(BALANCE_CHANGE)))
.andExpect(jsonPath("$.balanceAfterChange").value(hasItem(BALANCE_AFTER_CHANGE)));
响应:
{"username":"player1","transactionId":"336ca9de-1583-4f39-9c67-f8380323d09d","balanceChange":2,"errorCode":"","balanceVersion":1,"balanceAfterChange":5.00}
错误
java.lang.AssertionError: JSON path "$.transactionId"
Expected: a collection containing "336ca9de-1583-4f39-9c67-f8380323d09d"
but: was "336ca9de-1583-4f39-9c67-f8380323d09d"
Expected :a collection containing "336ca9de-1583-4f39-9c67-f8380323d09d"
Actual :"336ca9de-1583-4f39-9c67-f8380323d09d"
需要一个Hamcrest匹配器来计算该值
定义如下:
为Iterables
创建匹配器,该匹配器仅在通过检查的Iterables
生成至少一个等于指定项的项时匹配
JSON中的transactionId
是一个常规字符串而不是集合,因此这里不能使用hasItem()
试一试
jsonPath("$.transactionId").value(equalTo(TRANSACTION_UUID_ONE.toString()))
或者只是
jsonPath("$.transactionId").value(TRANSACTION_UUID_ONE.toString())