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

Grails Mocking:如何使mock的createUser方法忽略参数并返回true

解决Mock UserAPIService的createUser方法(忽略参数返回true)

嘿,这个需求太常见了!我来给你说怎么用demand闭包配置,让createUser不管传入什么参数都稳稳返回true。

假设你是用Spock框架(毕竟demand闭包是Spock Mock里的常用写法),核心就是用**通配符_**来匹配任意参数,具体配置代码如下:

def "测试依赖UserAPIService的业务服务"() {
    given:
    // 1. 创建UserAPIService的Mock实例
    def mockUserApiService = Mock(UserAPIService)

    // 2. 关键配置:用下划线匹配任意参数,指定返回值为true
    mockUserApiService.createUser(_) >> true

    // 3. 把Mock实例注入到你要测试的目标服务中
    def targetService = new YourTargetService(userAPIService: mockUserApiService)

    when:
    // 调用目标服务中依赖createUser的方法
    def operationResult = targetService.executeBusinessLogic()

    then:
    // 验证业务逻辑的结果符合预期
    operationResult == true
}

额外说明:

  • 如果createUser方法有多个参数(比如createUser(String username, UserInfo info)),只需要对应增加通配符即可:
    mockUserApiService.createUser(_, _) >> true
    
    这样不管传入什么用户名和用户信息,都会返回true。
  • 如果你想验证createUser确实被调用了(可选但推荐),可以在then块里加上调用次数验证:
    1 * mockUserApiService.createUser(_) // 确保方法被调用了1次,参数不限
    

如果是其他支持demand闭包的Mock框架,逻辑也是一样的——用框架提供的参数通配符来匹配任意输入,然后绑定固定返回值就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:26:41