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, введенный в контроллер, больше не существует после окончания "выполнения", и, следовательно, он не совпадает с тем, что вводится в моем тесте.
Можно ли как-нибудь проверить, вызывается ли этот метод-установщик по запросу или нет?
Заранее спасибо!