2011-01-31 58 views
1

這個奇怪的錯誤是什麼,我的測試:用一個簡單的測試

模型

scope :user_pending, lambda { |user| 
where("jobs.available = 0 AND jobs.user_id = ?", user.id) } 

測試

it "should have the scope" do 
    Job.should respond_to(:user_pending) 
end 

it "should return a list of jobs that are unavailable for the current_user" do 
    @user = Factory(:user, :id => 1) 
    @job = Factory(:job, :available => false, :user_id => @user) 
    Job.user_pending(@user).should == @job 
end 

第一個測試是合格的,但我不能傳遞第二。以下錯誤消息正在返回:

Failures: 


    1) Job Job :user_pending should return a list of jobs that are unavailable for the current_user 
    Failure/Error: Job.user_pending(@user).should == @job 
    expected: #<Job id: 6, title: "Contrata-se para fabrica de autos", location: "Aichi-ken, Toyohashi-shi", content: "Estamos contratando pessoas interessadas em trabalh...", user_id: 1, created_at: "2011-01-31 02:10:04", updated_at: "2011-01-31 02:10:04", available: false, company_name: "K.K. Test", company_website: "http://www.test.com", how_to_apply: "Enviar email para [email protected]", locked: false, visits: 0>, 
      got: [#<Job id: 6, title: "Contrata-se para fabrica de autos", location: "Aichi-ken, Toyohashi-shi", content: "Estamos contratando pessoas interessadas em trabalh...", user_id: 1, created_at: "2011-01-31 02:10:04", updated_at: "2011-01-31 02:10:04", available: false, company_name: "K.K. Test", company_website: "http://www.test.com", how_to_apply: "Enviar email para [email protected]", locked: false, visits: 0>] (using ==) 
    Diff: 
    @@ -1,2 +1,2 @@ 
    -#<Job id: 6, title: "Contrata-se para fabrica de autos", location: "Aichi-ken, Toyohashi-shi", content: "Estamos contratando pessoas interessadas em trabalh...", user_id: 1, created_at: "2011-01-31 02:10:04", updated_at: "2011-01-31 02:10:04", available: false, company_name: "K.K. Test", company_website: "http://www.test.com", how_to_apply: "Enviar email para [email protected]", locked: false, visits: 0> 
    +[#<Job id: 6, title: "Contrata-se para fabrica de autos", location: "Aichi-ken, Toyohashi-shi", content: "Estamos contratando pessoas interessadas em trabalh...", user_id: 1, created_at: "2011-01-31 02:10:04", updated_at: "2011-01-31 02:10:04", available: false, company_name: "K.K. Test", company_website: "http://www.test.com", how_to_apply: "Enviar email para [email protected]", locked: false, visits: 0>] 
    # ./spec/models/job_spec.rb:91:in `block (3 levels) in <top (required)>' 

我缺少什麼?它看起來都可以,對吧?我不明白那裏有什麼錯。

回答

3

看來你的範圍正在返回一個數組(這是我所期望的)。您的測試可能應該如下所示:

Job.user_pending(@user).first.should == @job