Ruby on rails 无法在仅测试中解析GraphQL架构中的接口类型

Ruby on rails 无法在仅测试中解析GraphQL架构中的接口类型,ruby-on-rails,graphql-ruby,Ruby On Rails,Graphql Ruby,我创建了一个接口类型,如: module UserErrorType include Types::BaseInterface definition_methods do def resolve_type(object, _ctx) ... end end end 以及一个如下所示的查询: query { thing { errors { code message ... on SomeDerivedTy

我创建了一个接口类型,如:

module UserErrorType
  include Types::BaseInterface

  definition_methods do
    def resolve_type(object, _ctx)
      ...
    end
  end
end
以及一个如下所示的查询:

query {
  thing {
    errors {
      code
      message
      ... on SomeDerivedType {
        blah
      }
    }
  }
}
当我在本地运行这个程序时,一切正常,我能够解析我的派生类型并进入
resolve\u type
方法

当我在rspec中运行时:

describe UserErrorType, type: :graphql_object do
  subject { execute(query, context) }
end
我得到以下错误:

GraphQL::RequiredImplementationMissingError:架构包含接口或联合,因此必须定义
resolve\u type->(obj,ctx){…}
函数


根据我对错误消息的理解,它希望我将
resolve\u type
方法直接放在
Schema
对象上,尽管我应该能够在
definition\u方法中直接在上面的界面中定义它。

我不确定这是标准的
graphql ruby
实践还是我们的遗物实现,但我们有一个测试支持文件,它将重新定义我们的模式(这可能是因为我们构建在Rails引擎中,并将模式缝合在一起)。在这个支持文件中,我们有如下内容:

@schema = OurEngine::Schema.define do
  query(query_type)
end
在此处添加未使用的
resolve_type
可以解决此问题:

@schema = OurEngine::Schema.define do
  query(query_type)

  resolve_type -> (_type, _obj, _ctx) do
    raise NoMethodError, 'Need to implement `resolve_type`'
  end
end

未使用此实现(它使用特定于接口的
resolve\u type
方法),但满足验证检查的要求。

我不确定这是标准的
graphql ruby
实践还是我们实现的遗迹,但我们有一个测试支持文件,它将重新定义我们的模式(这可能是因为我们是在Rails引擎中构建的,并将模式缝合在一起)

@schema = OurEngine::Schema.define do
  query(query_type)
end
在此处添加未使用的
resolve_type
可以解决此问题:

@schema = OurEngine::Schema.define do
  query(query_type)

  resolve_type -> (_type, _obj, _ctx) do
    raise NoMethodError, 'Need to implement `resolve_type`'
  end
end
未使用此实现(它使用特定于接口的
resolve\u type
方法),但满足验证检查的要求