【发布时间】:2014-09-26 10:10:43
【问题描述】:
我对 FactoryGirl 和 RSpec 有疑问。我有以下测试:
require 'rails_helper'
describe Customer do
it_behaves_like "Account"
describe "it has an address" do
let(:customer) {create(:customer)}
let(:address) {create(:address, addressable_id: customer.id, addressable_type: "Account")}
it "should have an address" do
expect(customer.address).to eq address
end
end
end
当我尝试运行时,它会抛出以下错误:
) Customer it has an address should have an address
Failure/Error: expect(customer.address).to eq address
expected: #<Address id: 1, street: "Street 1", zip_code: "11-111", city: "City 1", addressable_id: 1, addressable_type: "Account", created_at: "2014-09-26 10:07:51", updated_at: "2014-09-26 10:07:51">
got: nil
(compared using ==)
# ./spec/models/customer_spec.rb:11:in `block (3 levels) in <top (required)>'
但是当我把它重构成这样的时候:
require 'rails_helper'
describe Customer do
it_behaves_like "Account"
describe "it has an address" do
before do
@customer = create(:customer)
@address = create(:address, addressable_id: @customer.id, addressable_type: "Account")
end
it "should have an address" do
expect(@customer.address).to eq @address
end
end
end
它工作正常。为什么我的 let 示例失败了?
【问题讨论】:
标签: ruby-on-rails ruby rspec factory-bot