【问题标题】:How to test Devise in a Controller RSpec, error: undefined method `assign' for #<RSpec::Core::ExampleGroup::Nested_1:0x0000010597f4b8>如何在控制器 RSpec 中测试设计,错误:#<RSpec::Core::ExampleGroup::Nested_1:0x0000010597f4b8> 的未定义方法“分配”
【发布时间】:2011-08-28 19:36:42
【问题描述】:

我收到以下错误:

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

建议?谢谢

【问题讨论】:

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


    【解决方案1】:

    Rspec 发生了一些变化,现在使用的是assigns

    Doc here.

    【讨论】:

    • 谢谢,很想得到您对我后续问题的反馈。我真的不知道如何开始和正确的设计测试:stackoverflow.com/questions/7223549/…
    • 当更改为 assigns 时,仍然会出错:Failure/Error: assigns(:user, user) ArgumentError: wrong number of arguments (2 for 1)
    • 所以我将其更改为:assigns[:user] = user 这导致它现在在 #<:core::examplegroup::nested_1 :nested_1:0x000001051c5f38>
    • 您使用过时的方法,请在此处浏览文档:rspec.info/rails/writing/controllers.html
    猜你喜欢
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多