2014-03-25 64 views
0

我測試方法last_photo數據必須相同,並且測試應該成功。數據是相同的,但測試失敗

def last_photo 
    @last_photo ||= user_updates.latest.where("photo_front IS NOT NULL and photo_front != ''").first.try(:photo_front) 
end 

規格:

context "instance method" do 
    let(:user) { create :user } 

    context "last photo" do 
    before { create_list(:user_update, 3, user: user) } 
    let(:user_updates){ user.user_updates } 

    describe "#last_photo" do 
     subject { user.last_photo } 

     it { should eq user_updates.latest.first.photo_front } 
    end 
    end 
end 

測試應該會成功。但有一個奇怪的錯誤。

GIST

+1

你能告訴我們你如何定義'photo_front'嗎? – BroiSatse

+0

@BroiSatse'photo_front'這是用戶上傳的一張照片。 – user3458697

回答

2

答案很簡單實在:

expected: #<PhotoUploader:0x00000007e34868 ... 
got: #<PhotoUploader:0x00000007ebc100 ... 

值可能是相同的,但對象是在內存不同。由於您正在對這些對象進行比較,因此rspec預計這些對象將完全相同。

現在,user.user_updatesuser_updates是內存中的兩個不同的變量。你應該對價值進行比較。