2012-06-14 102 views
0

驗證失敗我需要測試的運行before_validation回調,但我只需要測試回調,我不想測試失敗驗證失敗時,而此刻我得到:忽略RSpec的

ActiveRecord::RecordInvalid: 
     Validation failed: Preview Invalid video ID 

我已經嘗試了很多東西。我相信我的回調方法在使用.save(:validate => false)時不會被調用,因爲它在before_validation上運行。

但是,當我做這樣的事情:

show = FactoryGirl.build :show 
show.should_receive :parse_url 
show.save 

我得到

Failure/Error: show.should_receive :parse_url 
    (#<Show:0x007fd9954699e0>).parse_url(any args) 
     expected: 1 time 
     received: 0 times 

儘管我在型號代碼:

before_validation :parse_url, :on => :save 

而且在方法調用身邊我想格式化後檢查字段。

我會非常感謝任何幫助。

+0

嘗試刪除「:on =>:保存」 – Roman

回答

0

那麼,你可以隨時捕獲ActiveRecord :: RecordInvalid錯誤,但它仍然會測試你的before_validation的行爲。由於您發現錯誤,RSpec測試不會失敗。

+0

謝謝。你有什麼想法爲什麼我的'FactoryGirl.build','.should_receive'和'.save'不工作? – Uko