alibaba / testable-mock

换种思路写Mock,让单元测试更简单
https://alibaba.github.io/testable-mock/
MIT License
1.83k stars 310 forks source link

Mock容器里面的mock方法还得明确指定targetClass是不是有点不符合语义 #200

Open JiaRG opened 3 years ago

JiaRG commented 3 years ago

https://github.com/alibaba/testable-mock/blob/6616ff1174447a50fdf7db3cd9b8d269f7ca6be0/demo/java-demo/src/test/java/com/alibaba/demo/association/CookerServiceMock.java#L6-L26

是否考虑提供这样一种约定,targetClass 为空时就代表Mock容器所关联的被测类中的方法

linfan commented 3 years ago

这个问题在之前的Issue中有被讨论过,需要保留targetClass参数主要的原因是Testable允许将目标类放在参数首位(有些Mock方法需要与原对象交互)。

假如参数是可省略的,那么在测试类ATest里看到这个Mock定义

@MockMethod
public String bm(B b) {
    return "bmMock";
}

它既可能是Mock类型B当中的String bm()方法,也可能Mock是A类型当中的String bm(B b)方法,就会产生歧义。