单元测试里的怎么用mock函数替换被测试函数里调用的函数?

💡 原文中文,约900字,阅读约需3分钟。
📝

内容提要

在测试utils模块的generate_id函数时,需使用mock替代random模块的random_odd_int函数,以确保每次返回固定值。可以在测试前设置mock,使generate_id调用mock而非真实函数。

🎯

关键要点

  • 在utils模块的generate_id函数中调用random模块的random_odd_int生成ID。
  • 需要测试generate_id函数的正确性,而random_odd_int函数已有专门的测试方法。
  • 测试时需使用mock替代random_odd_int,以确保返回固定值。
  • 尝试使用mockall库,但未成功,因为mock设置在测试方法内调用时才有效。
  • generate_id函数调用的random_odd_int仍然是原始模块中的方法。

延伸问答

如何在单元测试中使用mock替代函数?

可以在测试前设置mock,使generate_id调用mock而非真实的random_odd_int函数,以确保返回固定值。

为什么需要mock random_odd_int函数?

因为random_odd_int函数已有专门的测试方法,测试generate_id时只需关注其正确性。

mockall库在测试中遇到的问题是什么?

mockall库的mock设置只有在测试方法内调用时才有效,导致generate_id函数调用的仍是原始模块中的方法。

generate_id函数的主要功能是什么?

generate_id函数通过调用random_odd_int生成一个ID,并格式化为固定长度的字符串。

如何确保generate_id函数返回固定值?

通过mock random_odd_int函数,使其每次返回相同的固定值,从而确保generate_id返回一致的结果。

在测试中如何验证generate_id的输出?

可以使用assert_eq!宏来比较generate_id的实际输出与预期值是否相等。

➡️

继续阅读