gpt4 book ai didi

ruby-on-rails - RSPEC 未定义局部变量或方法 `response'

转载 作者:数据小太阳 更新时间:2023-10-29 07:43:55 24 4
gpt4 key购买 nike

我收到有关...的“响应”错误

规范/特征/test_name_spec.rb

require "spec_helper"

describe "the signin process", :type => :feature do
it "does not sign me in if I use the wrong password" do
visit '/users/sign_in'
within("#new_user") do
user = Fabricate(:user, email: 'user@example.com', password: 'password')
fill_in 'Email', :with => 'user@ example.com'
fill_in 'Password', :with => 'badone'
end
click_button 'Log in'
expect(response).to render_template(:new)
end
end

gem 文件

group :test do
gem 'shoulda-matchers', '~> 2.8', require: false # now loaded inside of spec/spec_helper.rb
gem 'capybara', '~>2.4'
gem 'launchy'
gem 'capybara-email', github: "dockyard/capybara-email"
gem 'database_cleaner', '~> 1.5', '>= 1.5.1'
end

我很困惑,因为上面的测试使用 expect 但使用 page

成功
expect(page).to have_content 'Signed in successfully.'

这里可能发生了什么?

编辑

我把它改成...

expect(page).to have_content 'Log in'

这基本上是一回事,但我仍然想知道为什么 response 出错了。它在 Capybara 中不可用,还是有另一个问题为什么它不起作用?

最佳答案

你正在写一个 feature spec 。对于功能规范,没有响应对象。按照设计,使用功能规范时,您不会使用低级别问题(例如呈现的模板)进行测试,而是使用更高级别的问题(例如页面上的预期内容)进行测试。

您可能对 request specs 感兴趣,它映射到 Rails 的集成测试,因此允许跨越多个请求但公开响应方法的规范。

但是,您不能(或至少不应该)在请求规范中使用 capybara (visitclick_button 等)- 归结为混合集成测试语言(getpostresponse)的问题已经浪费了很多时间) 和 capybara 。两者存在于完全不同的世界,例如由 capybara 触发的请求对 response 没有影响,由 get 触发的请求对 page 没有影响。

关于ruby-on-rails - RSPEC 未定义局部变量或方法 `response',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33645405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com