Ruby on Rails:如何测试控制器?

gor*_*die 2 ruby ruby-on-rails

我正在学习 Ruby。我现在正在尝试测试我的一个控制器。

我的测试文件是myapp/test/testing.rb,而我的控制器位于myapp/app/controllers/test_controller.rb

test.rb的内容是

data = testController.mymethod()
puts(data)
Run Code Online (Sandbox Code Playgroud)

但是做的时候

ruby myapp/test/testing.rb
Run Code Online (Sandbox Code Playgroud)

在终端中,我收到警告:

回溯(最近一次调用):myapp/test/testing.rb:6:in `':未初始化的常量 testController (NameError)

有人可以向我解释我所做的事情是错误的以及我应该怎么做吗?

谢谢 !

max*_*max 7

目前接受的测试 Rails 控制器的方法是向应用程序发送 http 请求并编写有关响应的断言。

RailsActionDispatch::IntegrationTest为 Minitest 提供集成测试,Minitest 是 Ruby 标准库测试框架。ActionDispatch::ControllerTest对于新应用程序,不再建议使用模拟整个框架的旧方法。

这是控制器测试的基本“Hello World”示例:

require 'test_helper'

class BlogFlowTest < ActionDispatch::IntegrationTest
  test "can see the welcome page" do
    get "/"
    assert_select "h1", "Welcome#index"
  end
end
Run Code Online (Sandbox Code Playgroud)

您还可以使用 RSpec,这是一个拥有大量追随者的不同测试框架。在 RSpec 中,您编写请求规范,它只是 ActionDispatch::IntegrationTest 之上的一个薄包装。