undefined局部变量或方法`render'

时间:2013-04-26 04:08:09

标签: ruby-on-rails-3 rspec-rails

我的rspec代码中出现以下错误

undefined local variable or method `render'

这是我的代码:

require 'spec_helper'
describe "messages/show.html.erb" do
   it "displays the text attribute of the message" do
    render
    rendered.should contain("Hello world!")
  end
end

这来自书:RSpec书 以下是我添加到Gemfile的内容。

group :development , :test do
   gem "rspec-rails", ">= 2.0.0"
   gem "webrat", ">= 0.7.2"
end

我没有将文件show.html.erb添加到views / messages中,但是我应该收到另一个错误,而不是

奇怪的是,这在我的机器上工作了一段时间。我删除了项目并创建了另一个项目,现在它无法正常工作

我在编辑gemfile后发出了这些命令

bundle install
script/rails generate rspec:install
rake db:migrate

4 个答案:

答案 0 :(得分:5)

对我来说,答案是改变

describe "messages/show.html.erb" do

describe "messages/show.html.erb", type: :view do

答案 1 :(得分:3)

如果您的show.html.erb_spec.rb文件包含:

require 'spec_helper.rb'

尝试将其更改为:

require 'rails_helper.rb'

说明: https://www.relishapp.com/rspec/rspec-rails/docs/upgrade

答案 2 :(得分:0)

您的代码的第一行似乎缺少结束语:

要求'spec_helper

答案 3 :(得分:0)

你可以改变你的测试,如下所示:

require 'spec_helper'
describe "messages/show.html.erb" do
  it "displays the text attribute of the message" do
    FactoryGirl.create(:message) # or an other test data creator gem
    visit "/messages/1"
    page.should have_content("Hello world!")
  end
end