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

如何使用MockK的mockkConstructor让构造函数抛出异常?

解决MockK构造函数Mock抛出异常的报错问题

你的代码报错是因为误用了anyConstructed()函数——它的作用是获取已构造完成的Mock实例,而非定义构造函数的行为。要让构造函数调用时抛出异常,需要直接针对构造函数的调用逻辑设置行为:

正确实现方式

匹配所有构造函数重载

如果需要拦截SendMessageRequest类的所有参数组合的构造函数,让它们都抛出异常,用以下代码:

mockkConstructor(SendMessageRequest::class)
every { SendMessageRequest(*anyVararg()) } throws IOException()

匹配特定参数的构造函数

如果只需要针对特定参数的构造调用抛出异常,替换为具体的参数匹配器即可:

mockkConstructor(SendMessageRequest::class)
// 示例:匹配带String类型参数的构造函数
every { SendMessageRequest(any<String>()) } throws IOException()

验证效果

此时调用对应的构造函数会直接抛出IOException:

// 触发异常
val request = SendMessageRequest("test-content")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:07:04