如何在Controller RSpec中测试Devise,错误:未定义的方法`assign'用于#<rspec :: core :: examplegroup :: nested_1:0x0000010597f4b8> </rspec :: core :: examplegroup :: nested_1:0x0000010597f4b8>

时间:2011-08-28 19:36:43

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

我收到以下错误:

undefined method `assign' for #<RSpec::Core::ExampleGroup::Nested_1:0x0000010597f4b8>

尝试按the docs进行测试时。

这就是我所拥有的:

user_controller_spec.rb

require 'spec_helper'

describe "devise/sessions/new.html.erb" do
  let(:user) do
    stub_model(User).as_new_record
  end

  before do
    assign(:user, user)
    # Devise provides resource and resource_name helpers and
    # mappings so stub them here.
    @view.stub(:resource).and_return(user)
    @view.stub(:resource_name).and_return('user')
    @view.stub(:devise_mapping).and_return(Devise.mappings[:user])
  end

  it "renders a form to sign the user in" do
    render
    rendered.should have_selector("form",
                                  :method => "post",
                                  :action => user_session_path
                                  ) do |form|
      form.should have_selector("input", :type => "submit")
    end
  end
end

连连呢?感谢

1 个答案:

答案 0 :(得分:4)

Rspec已经改变了一点,现在正在使用assigns

Doc here