【发布时间】:2013-04-10 12:56:32
【问题描述】:
我正在尝试为我的控制器提供一个干净的单元测试。这个 Controller 有一个 Service 作为依赖,这个 Serviceh 有一个 Datasource 作为依赖。
测试看起来像这样:
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration
public class ContentActionWebServiceControllerTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Autowired
private MyService myService;
@Test
public void getRequestActionList() throws Exception {
when(...)
perform(...);
verify(...);
}
@Configuration
@ImportResource("...")
static class MyTestConfiguration {
@Bean
public MyService myService() {
return Mockito.mock(MyService.class);
}
}
}
MyService 类似于
@Service
public class MyService {
@Autowired
private MyDataSource myDatasource;
...
}
因为 MyService 作为 Autowired 属性 MyDataSource,上下文没有被初始化,因为它没有找到任何满足 MyService 的 @Autowired 注解的 MyDataSource 类型。但是为什么它会尝试解决这个注释呢?这是模拟吗?
【问题讨论】:
-
能否将堆栈跟踪添加到您的问题中?它可能会帮助人们回答。谢谢。
标签: java spring-mvc mockito