Comments (9)
单独示例还没有写,但是我在内部实际项目里找到了有这种用法的地方,确定是可行的。
先再确认一下你是指Service调用Dao的测试,还是Dao调用Mapper的测试。如果Service调用Dao的话肯定可行,因为Dao就是普通类,这个代码我就不贴了。Dao调用Mapper稍微特殊一点,因为Mapper实现类是Mybatis动态生成的。实际这两种情况都适用。我贴一个Dao调用Mapper的例子,只包含相关部分代码(类型名脱敏用Xxx代替):
被测类
public class ReqXxxDAO extends BaseDAO {
private XxxReqMapper reqMapper;
public String getNum() {
... ... // 省略无关代码
return reqMapper.getXxxNum(param);
}
}
测试类
public class ReqXxxDAOTest {
private ReqXxxDAO dao = new ReqXxxDAO();
@MockMethod
Integer getXxxNum(XxxReqMapper r, QueryParam param) {
return ...; // 此处有一些基于param的判断逻辑,省略
}
@Test
public void testGetNum() {
assertEquals(1, dao.getNum());
}
}
你可以提供一些详细的信息,遇到的错误是什么,相关代码是怎样的。
from testable-mock.
是否可留个 mock mybatis plus dao 的demo
from testable-mock.
错误信息和被测方法的大致情况能贴一下吗?
from testable-mock.
kotlin demo中 没有看到接口方法 mock的例子,,
from testable-mock.
我抽空补一个Case做个验证,我理解你的问题是Mock在Service对象里对Dao接口方法的调用
报错了对吧?
from testable-mock.
对的
from testable-mock.
您好,mock mybatis plus 接口的demo有了么,想参考一下
from testable-mock.
谢谢您的回复先,dao是接口(kotlin),类似:
/**
* <p>
* 钱包交易流水记录表 Mapper 接口
* </p>
*
* @author loulvlin
* @since 2020-12-23
*/
interface WalletTradeDetailMapper : BaseMapper<WalletTradeDetail>
想问下,可以mock BaseMapper中的等方法么,如 'T selectById(Serializable id);' 这种?
from testable-mock.
可以的,唯一需要注意的是如果在DAO对象中定义的Mapper是子类型的(如WalletTradeDetailMapper
),即使调用继承自父类型(如BaseMapper
)的方法,在测试类定义Mock方法时,首位的参数依然应该使用子类类型。在文档的常见问题中也有提到。
from testable-mock.
Related Issues (20)
- java.lang.NoSuchMethodError:Mock容器类下的@MockNew方法,无法通过@MockContainer继承生效
- OmniConstructor工具类,开启了字节码增强,但mock对象时还是会随机偶发报错 HOT 3
- when use MockWith annotation, mockClass not right HOT 2
- 包路径映射后,mock未生效
- Maven package failed due to EnablePrivateAccessProcessor HOT 5
- 建议:建议增加两个快速开始文档 HOT 1
- OmniConstructor.newInstance(RyNormalTask.class) 报错 Failed to invoke constructor HOT 1
- 如何避免mock代码异常提交 HOT 3
- @MockContainer 注解对于继承类的void方法不能正常生效
- 被测试类的方法没有被mock HOT 1
- 使用@RequiredArgsConstructor出现Failed to load ApplicationContext
- 与Jacoco一起使用时,不支持Java17
- 使用OmniConstructor.newInstance()报错 HOT 1
- 从0.7.7升级到0.7.9,启用OmniConstructor的字节码增强模式效率变得非常慢
- 按文档在test里设置jvmArgs报空指针
- 测试service 中调用dao 中继承自mybatis中basemapper通用方法,mock dao层 不生效
- dao层mock 新增 修改 返回int类型接口,启动test报错,类型不匹配,改成Integer,mock不生效
- SpringBoot3中@{argLine} 和 -javaagent不能同时使用
- springboot框架下拦截器中的方法怎么修改
- 一个被测试类可以有个多个Mock类吗?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from testable-mock.