我一直无法找到关于编写好的RSpec控制器测试的文档或建议。具体来说,你应该使用感觉与RSpec非常不同的Rails'assert_select
还是有替代品呢?
以下示例是最佳做法吗?
describe ArticlesController do
render_views
let(:article) { create(:article) }
describe "show" do
it "should display the article title" do
get :show, id: article
response.should be_success
assert_select "h1", article.title
end
end
end
我不想写单独的视图测试,因为这非常不方便。
答案 0 :(得分:0)
您应该能够使用以下代码检查标题内容:
page.should have_selector("h1", :text => article.title)
更新:有人注意到(带-1)答案错误,page
变量是Capybara在调用visit
方法后设置的内容(当我回答时,我还年轻:P)。所以这是你在集成测试中使用的东西,而不是你正在尝试的功能测试(控制器)。
简短回答:不,在控制器测试中使用assert_select
是不正确的(用于检查请求响应,如果设置了变量等等)