Rails 3使用Rspec,Nested Resources和inherited_resources模拟了模型

时间:2011-06-25 02:04:03

标签: ruby-on-rails testing rspec rspec2 inherited-resources

我正在尝试使用Rspec和模拟模型测试嵌套控制器,但我收到了这些错误:

Failure/Error: it { assigns[:store].should equal(mock_store) } 
   expected #<Store:2198414660> => #<Store:0x83092544 @name="Store_1008">
        got #<User:2198383140> => #<User:0x8308aa24 @name="User_1009">

我无法理解为什么会这样。

的routes.rb

namespace :api do
  namespace :v1 do
    devise_for :users, :controllers => { :sessions => "devise/sessions", 
                                         :passwords => "devise/passwords", 
                                         :registrations => "devise/registrations" }
    resources :categories, :only => [ :index, :show ]
    resources :users, :only => [ :index, :show ] do
      resources :stores
    end

    resources :stores do
      resources :products
    end

    resources :products
  end
end

应用程序/控制器/ API / V1 / stores_controller.rb

class Api::V1::StoresController < Api::ApiController
  belongs_to :user
  actions :all
end

app / controllers / api / api_controller.rb

class Api::ApiController < InheritedResources::Base
  respond_to :json
end

我的spec / controllers / api / v1 / stores_controller_spec.rb - &gt; http://www.pastie.org/2118818引发了我这些奇怪的错误 - &gt; http://www.pastie.org/2118825

为什么我总是得到模拟用户而不是商店。

如果我从app / controllers / api / v1 / stores_controller.rb中删除了belongs_to:user行的所有测试通行证,但我有兴趣测试“users /:user_id / stores / *”路由。

我如何正确测试它们,以及为什么我会让一个模拟用户而不是商店。

我正在使用

* inherited_resources (1.2.2)
* rails (3.0.7)
* rspec (2.5.0)
* rspec-core (2.5.2)
* rspec-expectations (2.5.0)
* rspec-mocks (2.5.0)
* rspec-rails (2.5.0)

感谢您的时间。

0 个答案:

没有答案