我必须做的:
我必须用 JMockit 测试我的 spring mvc。我需要做两件事:
- 重新定义MyService.doService方法
- 检查重新定义的MyService.doService方法被调用了多少次
什么问题:
为了应付第一项,我应该使用 MockUp;为了应对第二个项目,我应该使用 @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;
}
};
}
}