6

Spring 3.2.11.RELEASE と JUnit 4.11 を使用しています。Spring のorg.springframework.test.web.servlet.MockMvcフレームワークを使用してコントローラー メソッドをテストしています。あるテストでは、次のオブジェクトが取り込まれたモデルがあります。

public class MyObjectForm 
{

    private List<MyObject> myobjects;

    public List<MyObject> getMyObjects() {
        return myobjects;
    }

    public void setMyObjects(List<MyObject> myobjects) {
        this.myobjects = myobjects;
    }

}

「MyObject」オブジェクトには次のフィールドがあります…</p>

public class MyObject
{
    …
    private Boolean myProperty;

MockMvc フレームワークを使用して、「myobjects」リストの最初の項目の属性「myProperty」が true であることを確認するにはどうすればよいですか? これまでのところ、私はそれが次のようになることを知っています…</p>

    mockMvc.perform(get(“/my-path/get-page”)
            .param(“param1”, ids))
            .andExpect(status().isOk())
            .andExpect(model().attribute("MyObjectForm", hasProperty("myobjects[0].myProperty”, Matchers.equalTo(true))))
            .andExpect(view().name("assessment/upload"));

しかし、属性の属性の値をテストする方法についてはわかりませんか?

4

2 に答える 2

13

オブジェクトに getter がある場合は、マッチャーhasItemをネストできます。hasPropertygetMyProperty

.andExpect(model().attribute("MyObjectForm",
   hasProperty("myObjects",
       hasItem(hasProperty("myProperty”, Matchers.equalTo(true))))))

リスト内のオブジェクトの数がわかっている場合は、最初の項目を確認できます

.andExpect(model().attribute("MyObjectForm",
   hasProperty("myObjects", contains(
         hasProperty("myProperty”, Matchers.equalTo(true)),
         any(MyObject.class),
         ...
         any(MyObject.class)))));
于 2016-01-18T21:58:29.380 に答える