Spring 尝试自动装配 Mockito 模拟

Sat*_*lam 5 spring

我有一个 Spring 管理的应用程序,我喜欢在其中模拟我的服务层。所以我创建了一个 Spring Application Java Config 并返回了一个实际服务的模拟。

例如,

@Bean
@Profile("resource")
public MyService mockService() {
    return mock(MyService.class)
}
Run Code Online (Sandbox Code Playgroud)

然后 MyService 变成

class MyService {

   @Autowired
   private MyDao dao;
}
Run Code Online (Sandbox Code Playgroud)

当 Spring 创建名称 bean 时"mockService",它还尝试MyDao在模拟上自动装配 ? 在我看来,这违背了嘲笑的目的。这是预期的行为,解决方法是什么?

Sat*_*lam 2

因此,最重要的是,最好的做法是对接口进行编码,而不是对具体的类进行编码,特别是如果您想在特定层上编写集中测试的话。