You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MockK中保持原函数行为:两种Stub写法的差异解析

两种MockK写法的核心区别

先明确:你要的是让mock的func保持原有返回逻辑(输入5返回10),但这两种写法效果完全不同:

  • every { mock.func(any()) } just Runs
    这个写法是给无返回值(Unit类型)的方法设计的,用来指定调用时仅执行空操作。但你的func是返回Int类型的,用这个配置的话,MockK会返回Int的默认值0,完全达不到mock.func(5) == 10的预期,反而会彻底覆盖原有逻辑。

  • every { mock.func(any()) } andAnswer { callOriginal() }
    这个写法才是让MockK调用原类的真实方法逻辑。当你调用mock.func(5)时,会执行ClassType里原本的v * 2代码,返回10,正好符合你想要保留原有行为的需求。

内容的提问来源于stack exchange,提问作者lannyf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:14:50