2

我的 Rails 7,Ruby 3.1 应用程序有一个失败的简单测试。我不明白为什么。

在我的应用程序中,我添加了一个标记为 stuff 的支持目录,其中包含一些 GraphQL 代码。所以在我的测试中,我想做一个 GraphQL.test(foo: "me", bar: "you")。

app/stuff/graphql.rb

在我的 inflections.rb 初始化程序中,我教我想要的屈折。

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.acronym 'GraphQL'
end

在我的 application.rb 中,我告诉 Zeitwerk 我有东西要处理,而 rake 任务 zeitwerk:check 说一切都很好。

graphql.rb 有一个简单的测试函数:

module GraphQL
  def self.test(foo:, bar:)
    puts "We got a #{foo} and a #{bar}"
  end
end

但是我的测试运行了,在测试这段代码时,在没有测试方法的 GraphQL 上测试失败。

我对自动加载和急切加载感到困惑,为什么我的测试似乎无法遵循这里的简单设置。

4

1 回答 1

0

这似乎是由于 Zeitwerk 的命名空间问题。在我的测试中,我有一个要求,它在不同的对象上引入了相同的命名空间,即 GraphQL。因此,在测试中,找不到命名方法,因为返回的对象位于错误的命名空间中。我删除了要求,测试按预期完成,没有错误。

于 2022-01-10T14:52:20.520 回答