Şu anda bir Spring MVC projesi için bazı birim testleri yazıyorum. Döndürülen ortam türü JSON olduğundan, doğru değerlerin döndürülüp döndürmediğini kontrol etmek için jsonPath kullanmayı denerim.SpringMVC/mockMVC/jsonpath dizeleri karşılaştırın
Sahip olduğum sorun, bir dize listesi doğru (ve yalnızca doğru) değerleri içerip içermediğini doğrulamaktır.
Planım oldu: Liste döndürülecek gerekiyordu her bir öğe için doğru uzunluğa
- kontrol ediniz, bu
ne yazık ki listede olsun hiçbiri kontrol Bu şeyler işe yarıyor gibi görünüyor.
İşte alakalı benim kod parçası: Sadece ilk iki "beklentileri"
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());
(Isok & isArray) çalışıyoruz. Diğerleri (uzunluk ve içerik için) istediğim zaman çevirebilirim ve döndürebilirim, bana yararlı bir sonuç vermiyorlar.
Herhangi bir öneriniz var mı?
çok teşekkür ederiz! Bu çok yardımcı oldu! –
Eğer yardımcı olduysa, cevabımı kabul edilir olarak işaretleyebilirsiniz :) – chaldaean
@chaldaean Hangi hamcrest kütüphanesini kullanıyorsunuz? Sahip olduğum birimde, hamcrest-all-1.1, org.hamcrest.Matchers sınıfı, hasSize ve includesInAnyOrder yöntemlerini içermiyor. –