Rails RSpec 测试一个简单的 link redirect_to 路径
Rails RSpec testing a simple link redirect_to path
我在 rails 应用程序中编写 RSpec 测试时遇到困难,以确保来自我的应用程序主页的简单 link 重定向到关于页面。我的功能测试文件中包含以下内容:
scenario "Have links redirect to the correct paths" do
visit '/'
click_link('about')
expect(response).to redirect_to('about_index_path')
end
link 的 ID:'about' 并且可以从浏览器进行测试,但我想通过测试驱动开发变得更好。有什么建议么?我已经尝试了预期结果的多种变体,但我一直得到类似
的结果
NameError:
undefined local variable or method `response'
或
NoMethodError:
undefined method `assert_redirect_to'
当我把它放在控制器规范中时,我得到类似
的东西
NoMethodError:
undefined method `click_link'
如有必要,我可以提供更多信息,但我认为这应该是一个非常简单的解决方案(比如测试 link 重定向到“http://www.google.com”),我只是没有找到.任何其他建议的方法表示赞赏。谢谢!
response
在功能规范中不可用。如果您想断言用户在单击 link 后位于特定页面上,请尝试:
expect(current_path).to eq about_index_path
功能规范用于通过外部界面(例如浏览器)测试某些功能。在功能规范中,您通常会针对 page
对象进行断言。
click_link
是一种 Capybara 方法,用于模拟功能规范中的浏览器交互,而不是控制器规范。控制器规范用于模拟单个 http 请求,该请求可以针对 response
对象进行断言。控制器规范非常适合测试重定向,尤其是到外部站点:
describe "#index" do
it "redirects to the google homepage"
get :index
expect(response).to redirect_to("http://www.google.com")
end
end
如果您想在测试方面做得更好,我建议您学习不同类型的测试、何时使用它们以及如何编写它们。有大量的资源可以帮助您。这是一篇很棒的文章,解释了测试 Rails 应用程序的好方法:
https://robots.thoughtbot.com/how-we-test-rails-applications
我在 rails 应用程序中编写 RSpec 测试时遇到困难,以确保来自我的应用程序主页的简单 link 重定向到关于页面。我的功能测试文件中包含以下内容:
scenario "Have links redirect to the correct paths" do
visit '/'
click_link('about')
expect(response).to redirect_to('about_index_path')
end
link 的 ID:'about' 并且可以从浏览器进行测试,但我想通过测试驱动开发变得更好。有什么建议么?我已经尝试了预期结果的多种变体,但我一直得到类似
的结果NameError:
undefined local variable or method `response'
或
NoMethodError:
undefined method `assert_redirect_to'
当我把它放在控制器规范中时,我得到类似
的东西NoMethodError:
undefined method `click_link'
如有必要,我可以提供更多信息,但我认为这应该是一个非常简单的解决方案(比如测试 link 重定向到“http://www.google.com”),我只是没有找到.任何其他建议的方法表示赞赏。谢谢!
response
在功能规范中不可用。如果您想断言用户在单击 link 后位于特定页面上,请尝试:
expect(current_path).to eq about_index_path
功能规范用于通过外部界面(例如浏览器)测试某些功能。在功能规范中,您通常会针对 page
对象进行断言。
click_link
是一种 Capybara 方法,用于模拟功能规范中的浏览器交互,而不是控制器规范。控制器规范用于模拟单个 http 请求,该请求可以针对 response
对象进行断言。控制器规范非常适合测试重定向,尤其是到外部站点:
describe "#index" do
it "redirects to the google homepage"
get :index
expect(response).to redirect_to("http://www.google.com")
end
end
如果您想在测试方面做得更好,我建议您学习不同类型的测试、何时使用它们以及如何编写它们。有大量的资源可以帮助您。这是一篇很棒的文章,解释了测试 Rails 应用程序的好方法:
https://robots.thoughtbot.com/how-we-test-rails-applications