【问题标题】:How can I test Rails Routes with Minitest?如何使用 Minitest 测试 Rails 路由?
【发布时间】:2012-07-08 04:49:37
【问题描述】:

我正在尝试将 Minitest 用于现有的 Rails 应用程序 (3.2),但没有任何运气运行路由测试。我尝试了 rspec 语法(应该是 route_to)和 TestUnit 语法(assert_routing),但没有运气。

关于让它发挥作用的任何建议?我需要包含的特定模块等?

谢谢

【问题讨论】:

    标签: ruby-on-rails routing minitest


    【解决方案1】:

    如果您使用minitest-rails,您可以通过在test/routes/homepage_test.rb 中放置以下内容来创建路由测试:

    require "minitest_helper"
    
    class HomepageRouteTest < ActionDispatch::IntegrationTest
      def test_homepage
        assert_routing "/", :controller => "home", :action => "index"
      end
    end
    

    或者,您可以使用 Minitest Spec DSL:

    require "minitest_helper"
    
    describe "Homepage Route Acceptance Test" do
      it "resolves the homepage" do
        assert_routing "/", :controller => "home", :action => "index"
      end
    end
    

    您可以使用以下 rake 任务运行这些测试:

    rake minitest:routes
    

    【讨论】:

    • 在使用 assert_routing 时,#:0x007fc6a4f7bc60> 出现错误 undefined method `assert_routing'。我需要在 minitest_helper 文件中修改某个步骤以使其正常工作吗?
    • cr45:您需要确保您的测试类继承自 MiniTest::Rails::ActionDispatch::IntegrationTest,或者如果您使用规范 DSL,顶级描述需要以“集成测试”或“验收测试”结尾"。
    • @blowmage 用 Rails 4.1 和 MiniTest 编写这样的路由测试仍然有用吗? stackoverflow.com/questions/24937110/…
    • @pdobb 我从未声称它有用。这是可能的。我想如果您对现有的特定路由有外部依赖,那么编写这些测试是值得的。这取决于您的需求。
    【解决方案2】:

    @blowmage 的回答对我有所帮助,但看起来语法发生了一些变化。

    使用 Rails 4:

    require "test_helper"
    
    class HomepageRouteTest < ActionDispatch::IntegrationTest
      def test_messages
        assert_generates '/messages', :controller => "messages", :action => "index"
      end
    end
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多