ruby 将特定文件添加到Rails测试命令会导致错误

7gs2gvoe  于 2023-05-17  发布在  Ruby
关注(0)|答案(1)|浏览(83)

当我向rails test命令添加特定文件或目录以运行控制器测试时,我得到以下错误:

/Users/foobar/name_of_app/test/application_controller_test_case.rb:1:in `<main>':uninitialized constant ActionDispatch (NameError)

class ApplicationControllerTestCase < ActionDispatch::IntegrationTest

你知道是什么导致了这个问题,以及如何解决它?
我在macOS 13.3.1上使用Ruby 3.1.2运行Rails 7.0.1。我的测试是迷你测试。
当我运行bin/rails test时,所有测试都按预期运行。
当我运行bin/rails test test/modelsbin/rails test test/system时,预期的测试子集按预期运行。
但是,当我运行bin/rails test test/controllers/day_controller_test.rb时,我得到上面的“未初始化常量”错误。事实上,无论我使用什么作为第三个参数(文件名、目录名、file_name:line_number),都会得到一个错误。这个错误让我认为,当我只在controllers目录中指定测试时,某些(或全部)Rails没有被加载。或者,可能是模型和/或系统测试之一导致加载丢失的文件。你知道如何解决这个问题吗?

xdyibdwo

xdyibdwo1#

简短的回答是,我有一个缺失的require 'test_helper'语句。(@Spickermann给了我关键线索。)
问题是:我的控制器测试都继承自我写的父类:ApplicationControllerTestCase。父类继承自ActionDispatch::IntegrationTest;但是,我没有从ApplicationControllerTestCase得到require 'test_helper'。因此,当我单独运行一个控制器测试用例时,我得到了uninitialized constant错误。
我不太确定“魔术”发生的顺序,但是当我使用bin/rails test运行所有测试时,在测试运行程序到达我的控制器测试之前,必需的文件是必需的。

相关问题