2011-05-20 45 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

相关问题