testing - 使用 Mockito 测试时为空控制器
问题描述
我正在测试需要自动接线服务的控制器。
我在很多地方读过(例如Mockito: How to test my Service with mocking?)我需要这样做
@RunWith(JUnitPlatform.class)
public class AdminControllerTest {
@Mock
private AdminService service;
@InjectMocks
private AdminController adminController;
@Test
public void registerUser() {
Boolean resultReal = adminController.registerUser();
assertTrue(resultReal);
}
}
但它失败了,我看到是因为 adminController 为空
相反,如果我这样创建控制器
AdminController adminController = new AdminController();
它有效,但我可以注入模拟。
也许我忘记了什么
解决方案
必须调用 MockitoAnnotations.openMocks(this) 方法来初始化带注释的对象。在上面的例子中,openMocks() 在测试基类的@Before (JUnit4) 方法中被调用。对于 JUnit3 openMocks() 可以转到基类的 setup() 方法。相反,您也可以将 openMocks() 放入您的 JUnit 运行器 (@RunWith) 或使用内置的 MockitoJUnitRunner。
因此,要么:
- 在测试运行之前调用
openMocks(this)
某处或 @RunWith(MockitoJUnitRunner.class)
在课堂上使用
推荐阅读
- r - R中分布均匀性的情绪中位数测试?
- cypress - 尝试通过 CLI 运行 Cypress,但出现错误
- angular - 使用 Rest API Gateway lambda 集成 CORS 问题进行放大
- python-3.x - Matplolib Axes 偏移乘法(10 的幂)控制
- python-3.x - 将列表中的字符串转换为对象(?)
- r - 如何分解数据框并将列值减少一定百分比
- mongodb - 如何从命令行运行 MongoDB $Merge(如何指定源?)
- python - 如何拆分一列字符串,并从单独的元素创建行?
- javascript - 哎呀,通过函数 cunstructor 获取元素
- amazon-web-services - 防止假定角色递归 - AWS