我正在尝试编写一些测试某些模板逻辑的视图规范。我遵循RSpec书中的说明,并检查其他在线参考。我似乎无法访问render
或assign
。
require "spec_helper"
describe "projects/index.html.erb" do
it "displays an entry for each project" do
projects = 5.times { FactoryGirl.create :project }
render
expect(all(".project-index-entry").count).to eq 5
end
end
当我运行上述内容时,我得到:
Failure/Error: render
NameError:
undefined local variable or method `render' for #<RSpec::ExampleGroups::ProjectsIndexHtmlErb:0x007fa2950d4140>
# ./spec/views/projects/index.html.erb_spec.rb:7:in `block (2 levels) in <top (required)>'
如果我尝试使用assign
,也会发生同样的事情。我知道我可以使用visit
,但是我必须在每个规范之前模拟用户登录的行为。我可能会被误解,但我认为渲染方法更加孤立,允许我跳过控制器中的身份验证检查。
那么,为什么我没有我期待的视图规范方法?
Versions:
- capybara 2.4.1
- rails 4.1.0
- rspec-core 3.1.3
- rspec-expectations 3.1.1
- rspec-mocks 3.1.0
- rspec-rails 3.1.0
答案 0 :(得分:1)
事实证明,我前段时间更新了rspec,之前的版本使用了明显不同的spec_helper
。更新后,逻辑分为spec_helper
和rails_helper
,因此要解决此问题,我必须重新运行rails generate rspec:install
。