HarmonyOS 鸿蒙Next 开发的单元测试部分的MockKit的使用

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 开发的单元测试部分的MockKit的使用

是真的没太看明白mock功能怎么用的

it(‘should_call_reportClick_if_isReport_is_true’, 0, async () =>{
mocker.mockFunc(Utils,Utils.isAd)
when(Utils.isAd)(adInfo).afterReturn(false);
mocker.mockFunc(ReportMgr.get(), ReportMgr.get().reportClick);
reportClickHandler.handle(options);
mocker.verify(‘ReportMgr.get().reportClick’,‘ArgumentMatchers.anyObj,ArgumentMatchers.anyObj’).atLeast(1)
});

我的reportClick函数确实是被调用了,但是一直说没有调用

failed 1 greater than the actual execution times of method

是为什么呢?怎么解决呢?

2 回复
Mock目前只支持mock对象非私有函数,能获取到对象,就能mock他的非私有函数,获取不到对象就无法mock
Mock函数调用when函数确定返回结果时,只支持一个参数验证

在HarmonyOS开发中,MockKit是用于单元测试的重要工具,它允许开发者模拟和验证应用中的依赖对象行为。使用MockKit时,你需引入相应的Mock模块,并创建mock对象来替代实际依赖,从而控制测试环境和验证代码逻辑。确保在测试文件中正确配置MockKit,并编写测试用例来模拟和验证方法调用及返回值。如果遇到具体实现问题,如Mock对象创建失败或验证逻辑不正确,建议详细检查Mock配置和测试用例代码。如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部