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
方法),但满足验证检查的要求