1

現在、Spring Boot 1.4 を使用しています。テストを作成していますが、次の状況を解決するための助けが必要です:

簡単にするために、リクエストスコープのBeanがあります。属性、セッター、およびゲッターを持つ単純なPOJOであるとしましょう。その Bean のセッターが要求に沿って 1 回だけ呼び出されていることを確認するテストを作成したいと考えています。

これが私のアプローチです:

@Component
@RequestScope
public class MyRequestScopedBean {
    private String aProperty;

    public String getaProperty() {
        return aProperty;
    }

    public void setaProperty(String aProperty) {
        this.aProperty = aProperty;
    }
}


@Controller
public class SampleController {
    ...
    @GetMapping("/some-random-url")
    public String doSomething(MyRequestScopedBean myRequestScopedBean) {
        ...
        myRequestScopeBean.setaProperty("some random value");
        ...
    }
}

@RunWith(SpringRunner.class)
@WebMvcTest(SampleController.class)
@WebAppConfiguration()
public class SampleControllerTest {
    ...
    @MockBean
    private MyRequestScopedBean myRequestScopedBean;

    @Autowired
    private MockMvc mvc;
    ....
    @Test
    public void aPropertySetterShouldBeCalledOnceWhenInvokingURL() throws Exception {
        this.mvc.perform(get("/some-random-url")
            .accept(MediaType.TEXT_HTML));
        verify(myRequestScopedBean, times(1)).setaProperty(anyString());
    }
}

ただし、「setaProperty」が呼び出されないことを示すテストは失敗しています。

myRequestScopeBean.getaProperty の値も確認しましたが、常に null を返します。

問題は、コントローラーに注入された MyRequestScopeBean のインスタンスが「実行」の終了後に存在しなくなったため、テストで注入されたものと同じではないことだと思います。

このセッターメソッドがリクエストに沿って呼び出されているかどうかを確認する方法はありますか?

前もって感謝します!

4

0 に答える 0