rspec 预计 ||没有得到

rspec expected || got nil

我是 rails 中的新手。我正在尝试使用 rspec.

在我的应用程序中测试我的系统控制器的更新操作

这里是我运行ning的测试代码:

describe 'Put update' do 
    before (:each) do
        @system = FactoryGirl.create(:system, name:"WAM", responsible_personnel: "Jeff", criticality: 1, status: "Available")
    end 

    context "valid attributes" do 
        it "located the requested @system" do
            put :update, id: @system, system: FactoryGirl.attributes_for(:system)
            assigns(:contact).should eq(@system)
        end
    end
end 

我的工厂代码:

 # spec/factories/systems.rb 
require 'faker'

FactoryGirl.define do  
 factory :system do |f|
    f.name { Faker::Lorem.word }
    f.responsible_personnel { Faker::Name.name}
    f.criticality {Faker::Number.between(1,5)}
    f.status "Available" || "Unavailable"
 end

 factory :invalid_system, parent: :system do |f|
    f.name nil
 end
end

当我 运行 测试时我得到这个错误:

 expected: #<System id: 285, name: "WAM", responsible_personnel: "Jeff", created_at: "2016-02-25 18:34:43", updated_at: "2016-02-25 18:34:43", criticality: 1, status: 0>
        got: nil

   (compared using ==)

这是我的系统控制器更新操作

def update
  if @system.update(system_params)
    flash[:success] = "System successfully updated."
    redirect_to edit_system_path
  else
    format.html { render :edit }
  end
end

您的规范要求在您的控制器中创建一个名为 @contact 的变量。我猜这是一个错字,您的 assigns 语句应该是:

assigns(:system).should eq(@system)