我正在尝试为我的控制器提供一个干净的单元测试。这个控制器有一个服务作为依赖,这个服务有一个数据源作为依赖。
测试看起来像这样:
@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 类型。但是为什么它会尝试解决这个注释呢?这是模拟吗?