【发布时间】:2023-01-12 07:14:38
【问题描述】:
我正在尝试在我的 Response 控制器上运行测试,其中没有人登录,如果有人试图在没有先登录的情况下尝试发布对祈祷 Request 的有效响应,则应用程序应重定向到登录 url。我在 requests.yml 文件中有一些测试 requests,当我尝试在测试代码中使用其中一个时,试图拉出它是 id,我收到一条错误消息,说我有一个 NilClass 错误,无法获取id。
这是我的测试代码:
require "test_helper"
class ResponsesControllerTest < ActionDispatch::IntegrationTest
def setup
@request = requests(:askingfororange)
@response = responses(:responsetoorange)
@user = users(:michael)
end
test "should redirect create when not logged in" do
assert_no_difference 'Response.count' do
post responses_path, params: { response: { content: "Lorem ipsum",
user_id: @user.id,
request_id: @request.id } }
end
assert_redirected_to login_url
end
end
这是我的 requests.yml 文件:
askingfororange:
content: "I need more oranges in my life. Please pray."
created_at: <%= 10.minutes.ago %>
user: michael
askingaboutpi:
content: "Does pi matter in spirituality? Please pray for me to know!"
created_at: <%= 3.years.ago %>
user: michael
askingforcat:
content: "Do cats help with spiritual health? Pray for me to find out!"
created_at: <%= 2.hours.ago %>
user: michael
askingforlime:
content: "I need more limes in my life, please pray."
created_at: <%= 3.days.ago %>
user: archer
most_recent:
content: "My most recent prayer request is... tada!"
created_at: <%= Time.zone.now %>
user: michael
<% 30.times do |n| %>
request_<%= n %>:
content: <%= Faker::Lorem.sentence(word_count: 15) %>
created_at: <%= 42.days.ago %>
user: michael
<% end %>
当我运行我的测试套件时,我得到以下信息:
ERROR ResponsesControllerTest#test_should_redirect_create_when_not_logged_in (0.36s)
Minitest::UnexpectedError: NoMethodError: undefined method `id' for nil:NilClass
request_id: @request.id } }
^^^
【问题讨论】:
标签: ruby-on-rails