Ruby on rails 预计rspec | |为零
我不熟悉rails测试。我正在尝试使用rspec在我的应用程序中测试我的系统控制器的更新操作 以下是我正在运行的测试的代码:Ruby on rails 预计rspec | |为零,ruby-on-rails,ruby,rspec,factory-bot,Ruby On Rails,Ruby,Rspec,Factory Bot,我不熟悉rails测试。我正在尝试使用rspec在我的应用程序中测试我的系统控制器的更新操作 以下是我正在运行的测试的代码: describe 'Put update' do before (:each) do @system = FactoryGirl.create(:system, name:"WAM", responsible_personnel: "Jeff", criticality: 1, status: "Available") end
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 ==)
您的规范要求在控制器中创建名为
@contact
的变量。我猜这是一个打字错误,您的赋值语句应该是:
assigns(:system).should eq(@system)
看起来控制器代码中的某些内容无法运行,或者没有像您预期的那样分配该变量。我在进行测试时一定忽略了这一点。这解决了我的错误。
assigns(:system).should eq(@system)