Что я должен сделать:JMockit: @Mocke и макетом сочетание в том же тесте
я должен проверить мой Spring MVC с JMockit. Мне нужно сделать две вещи:
- переопределять MyService.doService метод
- Проверьте, сколько раз переопределены MyService.doService метод называется
чем проблема:
Чтобы справиться с первым предметом, I должен использовать MockUp ; чтобы справиться со вторым пунктом I следует использовать @Mocked MyService. Как я понимаю эти два подхода переопределяют друг друга.
Мои вопросы:
- Как переопределить метод MyService.doService и одновременно проверить, сколько раз она была вызвана?
- Возможно ли избежать смешивания поведения & основанные на состоянии подходы к тестированию в моем случае?
Мой код:
@WebAppConfiguration
@ContextConfiguration(locations = "classpath:ctx/persistenceContextTest.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class MyControllerTest extends AbstractContextControllerTests {
private MockMvc mockMvc;
@Autowired
protected WebApplicationContext wac;
@Mocked()
private MyServiceImpl myServiceMock;
@BeforeClass
public static void beforeClass() {
new MockUp<MyServiceImpl>() {
@SuppressWarnings("unused")
@Mock
public List<Object> doService() {
return null;
}
};
}
@Before
public void setUp() throws Exception {
this.mockMvc = webAppContextSetup(this.wac).build();
}
@Test
public void sendRedirect() throws Exception {
mockMvc.perform(get("/doService.html"))
.andExpect(model().attribute("positions", null));
new Verifications() {
{
myServiceMock.doService();
times = 1;
}
};
}
}