我是一個試圖學習的rails/rspec newb。我設置了以下數據模型(節選)Rspec NoMethodError:undefined方法`呼叫',但一切通過軌道控制檯工作
t.string :foo
t.string :bar
t.date :future_date
,我有一個網絡表單創建與用戶,類似於此的rails tutorial相關的微柱這些條目。網頁表單看起來像這樣(摘錄):
<%= f.label :foo %>
<%= f.text_field :foo %>
<%= f.label :bar %>
<%= f.text_field :bar %>
<%= f.date_select :future_date %>
帶有按鈕「創建」,啓動帖子。一切似乎通過軌道控制檯正常工作; Web表單顯示正確,條目正確創建,數據庫正確填充。然而,當我運行RSpec的我得到
NoMethodError:
undefined method `call' for #<RSpec::Expectations::ExpectationTarget:0x0000000492b7c0>
下面是相關要求規範(節選):
it "should not create a foobar" do
expect { click_button "Create" }.should_not change(Foobar, :count)
end
換句話說,點擊無信息填寫在「創建」我有一個類似稍後用信息填充的示例,但幾乎相同的click_button也會引發此錯誤(應該更改.by(1))。我有類似的click_button測試對於用戶創建部分(沒有任何東西/輸入)工作正常,除了future_date之外,它非常相似。那加上我在我無休止的谷歌搜索中遇到的一些事情,讓我相信這個日期是某種程度上的責任,也許是版本或者其他方面的不一致。特別是因爲在實際使用中一切正常。這是與紅寶石1.9.3,Rails 3.2.6和Rspec 2.11.1。任何見解都非常感謝。
嘗試'期待{click_button 「創建」} .to_not變化(Foobar的,:計數)' – 2012-07-31 06:32:32
這做到了。我回到我的其他點擊按鈕的例子,他們也有.to和not。應該。捂臉。謝謝。 – nighliber 2012-07-31 15:33:40
真棒。 – 2012-07-31 18:52:24