2011-05-20 85 views
0

我得到一個rspec錯誤,我不會期望,我最終以另一種方式檢查。但是,我想知道爲什麼它不起作用。該錯誤是這樣的:爲什麼我得到這個(1)錯誤?

Failure/Error: @user.should have(1).work_shift 
RuntimeError: 
    expected work_shift to be a collection but it does not respond to #length or #size 

而且產品的規格有:

 it "should create the work shift" do 
      post :start, :work_hours => 6 
      flash[:error].should == nil 
      @user.should have(1).work_shift 
      response.should redirect_to labor_url      
     end 

爲什麼我得到這個錯誤? (用戶HAS_ONE work_shift,關聯正常工作)

+0

你將不得不進入rspec的期許和改變匹配,以接受非陣列參數。其他選項:「@ user.work_shift。should be」,「.should be_a_kind_of WorkShift」或「.should be_a WorkShift」。 – monocle 2011-05-20 14:23:36

回答

1

我想你可能想:

@user.work_shift.should_not == nil 

這也可以寫成:

@user.work_shift.should be_present 
+0

yeap,應be_present正是我​​需要thanx :) – Spyros 2011-05-21 00:13:27

1
expected work_shift to be a collection 

由於用戶僅具有一個work_shift

@user.work_shift 

不給陣列。

RSpec的消息稱

but it does not respond to #length or #size 

使匹配器正在尋找的陣列狀物體。

+0

所以,有(1)根本不工作?我明白你的觀點,它確實不是一個數組,但它如何被修復? – Spyros 2011-05-20 06:10:29

相關問題