我有一个 View 模板“show.html.haml”,类似
- if current_user.admin?
balabala
它将得到“undefined method `admin?'”对于 nil:NilClass"而 GET #show。我用“- if !current_user.nil? && current_user.admin?”修复了它。我想用 RSpec 添加一个测试用例。
describe "before login user - " do
it "render the show template" do
book = FactoryGirl.create(:book)
get :show, id: book.id
expect(response).to render_template("show")
expect(response).to be_success
end
end
在运行“bin/rake spec”时,无论我是否添加条件“!current_user.nil?”,它总是会成功。当我想检查渲染“显示” View 是否成功时,如何编写 expect 子句?
最佳答案
当您尝试测试来自 controller spec
的 View 内容时,你不能直接这样做。
您可以使用 render_views
声明这样做,但不推荐,您应该选择 request spec
或 feature spec
测试完整的请求-响应周期。
全局设置render_views
:
RSpec.configure do |config|
config.render_views
end
规范:
describe "before login user - " do
it "render the show template" do
book = FactoryGirl.create(:book)
get :show, id: book.id
expect(response).to render_template("show")
expect(response.body).to match /balabala/
end
end
关于ruby-on-rails - 如何期待 'render template' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39189748/