現在、Spring MVC プロジェクトの単体テストをいくつか書いています。返されるメディア タイプは JSON であるため、jsonPath を使用して正しい値が返されるかどうかを確認します。
私が抱えている問題は、文字列のリストに正しい (そして正しい) 値のみが含まれているかどうかを確認することです。
私の計画は:
- リストの長さが正しいことを確認する
- 返されるはずの各要素について、それがリストにあるかどうかを確認します
悲しいことに、これらのどれも機能していないようです。
私のコードの関連部分は次のとおりです。
Collection<AuthorityRole> correctRoles = magicDataSource.getRoles();
ResultActions actions = this.mockMvc.perform(get("/accounts/current/roles").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()) // works
.andExpect(jsonPath("$.data.roles").isArray()) // works
.andExpect(jsonPath("$.data.roles.length").value(correctRoles.size())); // doesn't work
for (AuthorityRole role : correctRoles) // doesn't work
actions.andExpect(jsonPath("$.data.roles[?(@=='%s')]", role.toString()).exists());
最初の 2 つの「期待」(isOk & isArray) のみが機能しています。他のもの (長さと内容) は、好きなようにひねって回すことができますが、有用な結果は得られません。
助言がありますか?