[英]RSPEC error: expected #<> got #<> (compared using ==) - Ruby on Rails
我正在用紅寶石上的RSPEC測試我的控制器。 這是我正在測試的(控制器的相關部分)操作,
控制器代碼:
before do
@company=FactoryGirl.create(:company)
@customer=FactoryGirl.create(:customer, company_id: @company.id)
@job=FactoryGirl.create(:job, customer_id: @customer.id, company_id: @company.id)
end
class JobsController < ApplicationController
def new
if params[:customer_id]
@job = current_member.company.jobs.new(
customer_id: params[:customer_id],
lead_id: params[:lead_id]
)
else
...
end
...
end
RSPEC代碼:
it "has valid job with customer_id param" do
get :new, {:customer_id=>@customer.id, :lead_id=>@job.lead_id}
expect(assigns(:job)).to eq @member.company.jobs.new(customer_id:@customer.id, lead_id:@job.lead_id)
end
這是我得到的錯誤:
Failures:
1) Failure/Error: expect(assigns(:job)).to eq @member.company.jobs.new(customer_id:@customer.id, lead_id:@job.lead_id)
expected: #<Job id: nil, name: nil, status: "pending", company_id: 43, account_id_old: nil, job_type_id: nil, address_id: nil, trade_id: nil, lead_id: nil, started_date: nil, end_date: nil, created_at: nil, updated_at: nil, order_number: nil, creator_id: nil, account_id: nil, customer_id: 22, contact_id: nil>
got: #<Job id: nil, name: nil, status: "pending", company_id: 43, account_id_old: nil, job_type_id: nil, address_id: nil, trade_id: nil, lead_id: nil, started_date: nil, end_date: nil, created_at: nil, updated_at: nil, order_number: nil, creator_id: nil, account_id: nil, customer_id: 22, contact_id: nil>
(compared using ==)
我不明白,“預期”和“獲得”部分似乎是同一回事! 想法/幫助嗎?
僅僅因為數據相同,並不意味着它們是同一對象(不是)。
您確實需要單獨檢查有關已分配對象的各種信息,例如:
before { get :new, { customer_id: @customer.id, lead_id: @job.lead_id } }
subject(:job) { assigns :job }
it { is_expected.to be_a_new Job }
it "should have the right customer_id" do
expect(job.customer_id).to eq @customer.id
end
it "should have the right lead_id" do
expect(job.lead_id).to eq @job.lead_id
end
...類似的東西。
由於兩個對象均未保存,並且您實際上不想測試它們是否完全相同,因此可以檢查它們的屬性是否匹配,比較將在兩個散列之間進行
it "has valid job with customer_id param" do
get :new, {:customer_id=>@customer.id, :lead_id=>@job.lead_id}
expect(assigns(:job).attributes).to eq @member.company.jobs.new(customer_id:@customer.id, lead_id:@job.lead_id).attributes
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.