我正在测试一个用pom.xml
注释的REST控制器,我想注入模拟服务。
我在这里寻求帮助spring boot ones但没有运气。
我正在使用以下注释开始测试spring-boot应用程序:
@RestController
其中@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebIntegrationTest
用Application.class
注释,但似乎我找不到一种方法来为我的控制器注入模拟依赖,例如这样做:
@SpringBootApplication
这是我看到的堆栈跟踪,它在进入超时后失败,因为它试图将所有依赖项注入数据库(我正试图避免尝试在服务级别引入模拟):
@Mock
private BlogPostService blogPostService;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
答案 0 :(得分:3)
您正在使用Mockito,为什么不使用Mockito测试跑步者?
使用以下注释代替使用您提供的注释注释测试:
@RunWith(MockitoJUnitRunner.class)
例如:
@RunWith(MockitoJUnitRunner.class)
public class MyControllerTest {
}
要在控制器中注入模拟Mockito,请使用:
@RunWith(MockitoJUnitRunner.class)
public class MyControllerTest {
@InjectMocks
private MyController controller;
@Mock
private BlogPostService service;
}
在这种情况下,Mockito将创建MyController
(您的REST控制器)的新实例,并在控制器的所有字段中使用给定字段注入类型为BlogPostService
的模拟。
您提供的注释非常适合集成测试,但是当您将控制器作为一个单元进行测试时,您不需要它们。 如果你是集成测试,那么嘲笑服务也不对。