2011-05-28 51 views
1

使用CouchDB(couchrest_model)作爲文檔數據庫,我有一個正常的Rails項目(沒有活動記錄)。使用RSpec在CouchRest模型中測試Rails的錯誤使用RSpec的測試錯誤

我沒有設置RSpec和一個基本的腳手架'項目'。

當我測試了以下規格:

before(:each) do 
    @project = Project.create! valid_attributes 
    end 

    describe "GET index" do 
    it "assigns all projects as @projects" do 
     get :index 
     assigns(:projects).should eq([@project]) 
    end 
    end 

我收到以下錯誤:

Failure/Error: assigns(:projects).should eq([@project]) 

     expected [{"name"=>"test", 
        "updated_at"=>2011-05-28 11:24:04 -0500, 
        "created_at"=>2011-05-28 11:24:04 -0500, 
        "couchrest-type"=>"Project", 
        "_id"=>"709edbfaafb24fa1eff7d5f3966b2bda", 
        "_rev"=>"1-ae3f6356f8e32f6006337a4f3759bca4"}] 
      got [{"name"=>"test", 
        "updated_at"=>2011-05-28 11:24:04 -0500, 
        "created_at"=>2011-05-28 11:24:04 -0500, 
        "_id"=>"709edbfaafb24fa1eff7d5f3966b2bda", 
        "_rev"=>"1-ae3f6356f8e32f6006337a4f3759bca4", 
        "couchrest-type"=>"Project"}] 

看來,唯一的區別是在哈希元素的順序:

(compared using ==) 

    Diff: 

    @@ -1,7 +1,7 @@ 
    [{"name"=>"test", 
     "updated_at"=>2011-05-28 11:24:04 -0500, 
     "created_at"=>2011-05-28 11:24:04 -0500, 
    - "couchrest-type"=>"Project", 
     "_id"=>"709edbfaafb24fa1eff7d5f3966b2bda", 
    - "_rev"=>"1-ae3f6356f8e32f6006337a4f3759bca4"}] 
    + "_rev"=>"1-ae3f6356f8e32f6006337a4f3759bca4", 
    + "couchrest-type"=>"Project"}] 

我知道'rspec'和'rspec-rails'只能用於Active Record,但它不應該如此對於其他ORM不同。我錯過了什麼嗎?

哪個是修復此測試的最佳方法?

回答

0

嘗試:

assigns(:projects).should == [@project] 
+0

我得到了同樣的錯誤... – Christian 2011-05-30 18:08:10

+0

您在使用Ruby 1.9的?如果是這樣,你可以在1.8版本中試用嗎? – 2011-05-30 18:41:31

+0

是的,我使用紅寶石1.9.2。我嘗試了1.8.7,它沒有工作,同樣的錯誤。我也使用rails 3.0.7,rspec 2.6.0,rspec-rails 2.6.1。我認爲這是RSpec的'assigns'的一個問題 – Christian 2011-05-30 20:46:24