Ruby on rails 使用RSpec用CouchRest模型测试Rails中的错误

Ruby on rails 使用RSpec用CouchRest模型测试Rails中的错误,ruby-on-rails,rspec,couchdb,couchrest,Ruby On Rails,Rspec,Couchdb,Couchrest,我有一个普通的Rails项目(没有活动记录),使用CouchDB(couchrest_模型)作为文档数据库 我设置了RSpec和一个基本的脚手架“项目” 当我测试以下规范时: before(:each) do @project = Project.create! valid_attributes end describe "GET index" do it "assigns all projects as @projects" do get :index

我有一个普通的Rails项目(没有活动记录),使用CouchDB(couchrest_模型)作为文档数据库

我设置了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”只适用于活动记录,但对于其他orm来说应该没有什么不同。我错过什么了吗

修复此测试的最佳方法是什么?

尝试:

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

你在使用Ruby 1.9吗?如果是这样的话,你能在1.8中试试吗?是的,我使用的是ruby 1.9.2。我试过使用1.8.7,但没有成功,同样的错误。我还使用了rails 3.0.7、RSpec2.6.0、RSpecRails 2.6.1。我认为这是RSpec的“分配”问题。你能检查每个对象的类吗,即放置分配(:项目);puts@project.CLASS两个类都是相同的:“project”。。。但是当你检查它们时,元素的顺序是不同的…最后这是一个最近修复的CouchRest模型的错误。无论如何,你的回答让我更详细地检查了RSpec。