Spring: вызвано тестирование метода с заданным контентом

В настоящее время я использую Spring Boot 1.4. Я создаю свои тесты, но мне нужна помощь в решении следующей ситуации:

У меня есть запрос bean-объекта, для простоты, скажем, это простой POJO с атрибутом, сеттером и геттером. Я хочу создать тест, чтобы убедиться, что установщик этого компонента вызывается один раз и только один раз по запросу.

Это был мой подход:

@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());
    }
}

Тем не менее, test терпит неудачу, утверждая, что setaProperty никогда не вызывается.

Я также проверил значение myRequestScopeBean.getaProperty, но всегда возвращает ноль.

Я предполагаю, что проблема в том, что экземпляр MyRequestScopeBean, введенный в контроллер, больше не существует после окончания "выполнения", и, следовательно, он не совпадает с тем, что вводится в моем тесте.

Можно ли как-нибудь проверить, вызывается ли этот метод-установщик по запросу или нет?

Заранее спасибо!

0 ответов

Другие вопросы по тегам