【问题标题】:Can we breakdown a large mini-test file (some_controller_test.rb) into multiple test files我们可以将一个大的迷你测试文件(some_controller_test.rb)分解成多个测试文件吗
【发布时间】:2015-10-14 05:27:41
【问题描述】:

我的 rails 应用程序中有一个名为 reports控制器。此控制器有 4 或 5 个(报告)操作,而不是一个非常大的文件。

我正在使用迷你测试来测试我的应用程序。这个控制器的测试文件 (reports_controller_test.rb) 文件太大。我只想分解每个报告的测试文件,以便我可以分别为每个报告编写测试。我真的可以将我的 1 个小型测试文件 拆分为 许多测试文件

【问题讨论】:

    标签: ruby-on-rails unit-testing testing minitest rails-4-2-1


    【解决方案1】:
    • 在您的控制器测试文件夹中创建一个文件夹(即 reports
    • 使用每个报告名称制作 .rb 文件
    • 控制器测试类名称应在该文件夹的所有文件中相同
      • 在您的情况下为“ReportsControllerTest
    • 运行您的测试,它们将在运行时合并,并作为单个文件工作,但它会帮助您将大文件分成小文件

    【讨论】:

    • 这里需要注意的是,这些测试不能有自己的设置方法。例如,如果我有MyControllerTestMySecondControllerTest,并且它们都测试MyController,那么其中一个测试将只使用一种设置方法,因为它们被合并并且一个被覆盖。似乎这要求所有这些测试的设置要么存在于一个文件中,要么存在于每个测试中,这可能并不理想。
    【解决方案2】:

    我知道这个问题有点老了,但 Minitest 仍然被大量使用,所以我希望这对任何人都有用,因为我有点困惑。

    在很多情况下,您应该做的就是分解文件。如果新文件与其他文件具有相同的类名,那么我们将看到 Malik 报告的行为(文件被合并)以及 @framauro13 谈到的限制。使用这种方法,您将只有一种设置方法可用于所有文件。

    真正有意义的是拥有完全隔离的测试文件。所以在这种情况下,我们必须打破在测试文件的类名中指明控制器的惯例,指明我们要测试的控制器。可以这样做:

    class MyCustomName < ActionController::TestCase
        tests Some::Namespace::TheController
        ...
    end
    
    class OtherCustomName < ActionController::TestCase
        tests Some::Namespace::TheController
        ...
    end
    

    更多信息可以在“自动推断控制器”部分中找到here

    【讨论】:

    • ActionController::TestCase deprecated 不是已经有几年了吗?
    猜你喜欢
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    相关资源
    最近更新 更多