【发布时间】:2020-03-14 04:53:03
【问题描述】:
背景
我正在尝试将旧的 ActionDispatch::IntegrationTest 测试移植到 rspec。
此测试目前正在通过:
require 'test_helper'
class HeartbeatControllerTest < ActionDispatch::IntegrationTest
test "heartbeat" do
get "/heartbeat"
assert_response :success
end
end
控制器
我有一个HeartbeatController,它返回一个 200:
class HeartbeatController < ApplicationController
def show
render(json: { 'status': 'ok' })
end
end
curl 可以正常工作。
路线
rake routes 显示路线:
Prefix Verb URI Pattern Controller#Action
heartbeat GET /heartbeat(.:format) heartbeat#show
规格
我的测试非常简单:
require 'rails_helper'
describe HeartbeatController do
it 'succeeds' do
get '/heartbeat'
expect(response).to be_success
end
end
但是当我运行它时
Failures:
1) HeartbeatController succeeds
Failure/Error: get '/heartbeat'
ActionController::UrlGenerationError:
No route matches {:action=>"/heartbeat", :controller=>"heartbeat"}
# ./spec/controllers/heartbeat_controller_spec.rb:5:in `block (2 levels) in <top (required)>'
Finished in 0.00718 seconds (files took 1.11 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/controllers/heartbeat_controller_spec.rb:4 # HeartbeatController succeeds
问题
- 为什么这个测试失败了?
- 我做错了什么?
- 如果 Stack Overflow 不存在,我该如何进一步调试?
【问题讨论】:
标签: ruby-on-rails rspec