如何使用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
相关产品推荐
相关产品推荐

