unit-testing - 使用 Mockito 以嵌套方式测试具有多个自动装配类的函数
问题描述
这里我要测试一下method1
。我想使用@Mock
和@InjectMocks
注释来实现它,但是使用class B
as mock,它会返回 NPE。
class A {
@Autowired
private B b;
public String method1()
{
return b.method2();
}
}
class B{
@Autowired
private C c;
public String method2(){
return C.method3();
}
}
测试类:
@InjectMocks
A a;
@Mock
B b = new B();
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
public void testMethod1() {
String x=a.method1();
assertEquals("value",x);
}
解决方案
使用@Mock
注解时,不要手动实例化变量。
Mockito 会为你做这件事,否则你最终会得到普通实例而不是模拟:
@Mock
B b;
还要确保你以某种方式设置你的 mock 以期望一个特定的值:
doReturn(returnString).when(b).method2();
推荐阅读
- grails - Rundeck 更新到 3.2
- python - 如何训练 y_pred 形状与其 y_true 形状不匹配的奇异输出 Keras 模型?
- context-free-grammar - 使用上下文无关文法处理命题逻辑符号
- r - xgb.plot.multi.trees 括号里的数字是什么意思?
- c++ - 根据类模板参数值禁用成员函数
- c# - ASP.NET Core API 静态文件授权
- python - 剪切除感兴趣区域之外的所有python
- flutter - '未来
' 不是类型 'String' 的子类型 - ms-word - Word:您可以将 MergeFields 从原始文档传递到嵌入文档吗?
- javascript - 我的 PDF 查看器出现获取策略错误