2013-10-24 27 views
0

我想使用RSpec來測試這一行控制器:RSpec的錯誤:預期:無,得到:[](比較使用==)

@dreams = Dream.public_dreams.includes(:user).where("users.type_id = ?", 5) 

我使用這條線的控制器進行測試測試:

Dream.public_dreams.select { |dream| dream.user.type_id = 5 }.should eq(@dreams) 

不過,我得到這個錯誤:

expected: nil, got [] (compared using ==) 
+0

您剛剛編輯了導致問題的部分。請刪除您的問題,或者留下問題並將其中一個答案標記爲已接受... – tyler

+0

@Nikita希望從'Dream'模型中看到'public_dream'的定義。請用那個更新這個問題。 :) – kiddorails

+0

不,這是一個與以前不同的問題。更改代碼和錯誤不是讓人們幫助你或爲其他人建立良好知識庫的好方法。 – tyler

回答

1

@dreams是一個實例變量,這意味着我和一個班級綁在一起。您的控制器中的@dreams與您測試中的@dreams不一樣。在Ruby中,對從未設置的實例變量的引用將爲nil

您可以通過執行

Dream.public_dreams.select { |dream| dream.user.type_id = 5 }.should eq([])

「修理」你的測試,但你可能想在該數組中的東西。您可能沒有返回任何內容,因爲您的測試環境中沒有數據庫中的任何數據(或者可能不包含該ID)。

+0

非常感謝!我贊同你。 –