Rails get :index 的最小测试语法

Rails minitest syntax for get :index

我正在阅读 Hartl 教程,我对这是否是正确的语法有疑问。 rails 如何知道要查看哪个控制器?我有 10 个控制器,我正在为静态页面控制器编写测试。它怎么知道 get :home 指的是什么以及在哪里?它是否在关联的控制器中查找文件名?还是在路由中查找?

另外,assert_response是机架测试还是rails测试?

require 'test_helper'

class StaticPagesControllerTest < ActionController::TestCase

  test "should get home" do
    get :home
    assert_response :success
  end

  test "should get help" do
    get :help
    assert_response :success
  end
end

How does it know what get :home refers to and where?

Rails 做了很多 魔术 ,其中一些魔术属于 convention over configuration.

类别

在这种情况下,这个测试的 class 的名称是 StaticPagesControllerTest 这一事实告诉测试套件它正在测试 StaticPagesController.

以这种方式命名测试是标准的 rails 惯例。您可以在技术上配置任何测试以查看您想要的任何控制器或操作,但遵循此约定有很多好处(另一个讨论)。

当您告诉它 get :home 时,它在名为 :home.

的控制器操作上使用 get http method

Also, is assert_response a rack test or a rails test?

它询问 rails 收到的状态代码。在这种情况下,它正在检查状态代码是否为 200

附加信息:http://api.rubyonrails.org/classes/ActionDispatch/Assertions/ResponseAssertions.html#method-i-assert_response