2015-11-30 60 views
1

我認爲這是一個非常基本的問題......爲什麼不是assert方法在這個簡單的例子中工作?Rails「斷言」未定義的方法'+'

assert true 

我收到以下錯誤信息:

NoMethodError Exception: undefined method `+' for nil:NilClass 

這是軌道4.2.1。

編輯:這實際上是整個代碼塊。我所做的只是進入rails控制檯並輸入assert true。

+1

請張貼整個代碼塊完整的錯誤堆棧跟蹤。 –

+1

該錯誤與該行代碼無關。我們可以看看其餘的嗎? – sevenseacat

+0

請發佈更多信息,以便我們提供幫助。 – Beengie

回答

4

雖然有一大堆的事情要了解什麼是背後Rake魔術,Rails,當你運行rake testMinitest,但基本上,如果你想獲得一些基本的瞭解OOP的紅寶石才把到Rails,你不會在你的控制檯中做到這一點。

當你在你的Rails控制檯運行assert true直接,這意味着你打電話叫main的對象上assert方法。然而,assert方法在assertions.rbAssertions模塊定義(您可以通過運行gem open minitest檢查或發現您的寶石的位置),它包含在Test類。這意味着應該在Test類的實例上調用assert方法,這實際上是在Rails中運行測試時發生的。 main只是方法未定義的Object類的一個實例。

但奇怪的是,你從控制檯得到的消息,應該是

NoMethodError: undefined method 'assert' for main:Object