You need to enable JavaScript to run this app. Rails集成GraphQL编写filter单元测试时resolver无call方法报错
优惠活动
大模型
产品
解决方案
定价
更多

Rails集成GraphQL编写filter单元测试时resolver无call方法报错

报错根因

你遇到的undefined method 'call' for Resolvers::LinksSearch:Class报错,是因为教程使用的是旧版本的search_object_graphql和graphql gem,旧版本SearchObject封装的Resolver默认提供.call类方法作为执行入口,而新版本配合GraphQL::Schema::Resolver使用时,该方法已经被移除,替换为标准Resolver的.resolve入口。


可行解决方案

方案1:直接修改测试调用方法(最快修复)

修改test/graphql/mutations/resolvers/links_search_test.rb中的find方法,将call替换为resolve即可:

def find(args)
  Resolvers::LinksSearch.resolve(nil, args, nil)
end

方案2:保留原有测试写法,给Resolver补充call方法

如果你不想修改测试代码,可以在app/graphql/resolvers/links_search.rb的Resolvers::LinksSearch类中补充.call类方法兼容旧调用:

class Resolvers::LinksSearch < GraphQL::Schema::Resolver 
    include SearchObject.module(:graphql)
    # 原有代码不变,新增以下方法
    def self.call(object, arguments, context)
      self.resolve(object, arguments, context)
    end
    # ... 原有其他代码
end

额外优化提示

你的测试文件放在test/graphql/mutations/resolvers路径下不符合常规目录规范,resolver不属于mutation范畴,建议移到test/graphql/resolvers目录下避免后续路径混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 23:24:03