当某个类依赖2个含有相同方法签名的类时,定义局部Mock,会出现方法签名冲突的问题。
goldbrown opened this issue · 1 comments
goldbrown commented
例如,CService依赖AMapper和BMapper,代码如下
AMapper {
A selectById();
}
BMapper {
B selectById();
}
CService {
void doSomething() {
a.selectById();
b.selectById();
}
}
单测的Mock写法:
public static class Mock {
@MockInvoke(targetClass = AMapper.class)
public A selectById() {
}
@MockInvoke(targetClass = BMapper.class)
public B selectById() {
}
}
会提示public A selectById()方法定义和public B selectById()方法定义冲突。
linfan commented
这种情况需要用到@MockInvoke
注解的targetMethod
参数,比如:
public static class Mock {
@MockInvoke(targetClass = AMapper.class, targetMethod = "selectById")
public A selectByIdForA() {
}
@MockInvoke(targetClass = BMapper.class, targetMethod = "selectById")
public B selectByIdForB() {
}
}
使用targetMethod
参数后,Mock方法本身可以随意命名。