2015-09-23 24 views
0

Rspec的Rspec的驗證錯誤導致測試失敗(但它是我的意圖有一個驗證錯誤)

context "has non ascii characters" do 

     it "will not call get_imdb" do 
      expect_any_instance_of(Celebrity).not_to receive(:get_imdb) 
      FactoryGirl.build(:imdb_celebrity, first_name: "Sæthy") 
     end 

     end 

型號:

def celebrity_status 

    if full_name.ascii_only? 
     get_imdb ## << -- returns string or nil 
    end 

    ### If get_imdb returns nil (or isn't called), record is not valid 

end 

驗證如果get_imdb返回nil或失敗時不叫。我的問題是我試圖測試方法的ascii字符部分,但通過這樣做 - 我的驗證失敗,並在運行Rspec測試時在控制檯中給我一個「驗證失敗」錯誤。

但這就是我想要發生的......我想驗證失敗。

我該如何解決這個問題?

回答

1

就其本身而言,模型驗證失敗應該不會引發異常。您可能試圖保存該記錄,這會導致save失敗,如果通過save!create!撥打電話,則可能會引發異常。

您可以測試模型是否有效,通過調用valid?

expect(celebrity.valid?).to be false 

這也是檢查誤差散地看到,它有預期的內容有用:

celebrity.valid? # => false 
expect(celebrity.errors[:my_error]).to equal "my error message"