【问题标题】:Rails4/devise/rspec issues with redirect testing重定向测试的 Rails4/devise/rspec 问题
【发布时间】:2014-02-22 16:10:27
【问题描述】:

我在学习 RSpec 时遇到了一个问题,我不知道我做错了什么。

这是我的控制器代码:

def create
  @item = Item.new(item_params)
  if current_user
    @item.user_id = current_user.id
  end
  respond_to do |format|
    if @item.save
      format.html { redirect_to @item, notice: 'item was successfully created.' }
      format.json { render action: 'show', status: :created, location: @item }
   else
      format.html { render action: 'new' }
      format.json { render json: @item.errors, status: :unprocessable_entity }
   end
  end
end

我的控制器规格:

it "renders new page again if validation fails" do
user = User.new(email:"test@email.com", password:"tomandjerry")
sign_in user
post :create, item: { name:"Hi"} 
expect(response).to redirect_to("/items/new")
end

我有

include Devise::TestHelpers

在我的 controller_spec 和

config.include Devise::TestHelpers, :type => :controller

在 spec_helper 中。

看起来不错,但我遇到了

       ←[31m Expected response to be a redirect to <http://test.host/items/new>
but was a redirect to <http://test.host/users/sign_in>.←[0m

错误。

您能否建议我做错了什么?

【问题讨论】:

    标签: ruby-on-rails rspec devise


    【解决方案1】:

    你不是在创建用户,你只是在初始化对象。改为这样做:

    user = User.create!(email:"test@email.com", password:"tomandjerry")

    作为旁注,我建议您为此使用 rails 固定装置或 factory_girl。

    【讨论】:

    • 成功了,谢谢。至于夹具 - 我肯定会学习并使用它,我现在只是想尝试一些基本测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2021-12-16
    • 2013-05-30
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多