如何测试嵌套资源

时间:2012-12-12 16:09:41

标签: ruby-on-rails rspec

我有一个有一些版本的游戏模型(has_many)。我选择使用嵌套资源来表达这一点。

resources :games do
  resources :releases, only: [:new, :create, :destroy]
 end

我正在尝试使用RSpec来测试我的发布控制器操作。这是我的测试文件的一部分。

 describe "GET new" do
  it "assigns a new release as @release" do
    get :new, {}, valid_session
    assigns(:release).should be_a_new(Release)
  end
 end

当我没有设置game_id参数时,我有一个No Routes Match错误。当我添加:game_id => 1时,我有一个RecordNotFound错误。

所以我的问题是如何设置游戏对象来表达嵌套资源?

1 个答案:

答案 0 :(得分:0)

我对rspec也很陌生 - 温柔:)一旦你正确地测试你的应用程序,你的生活将更快,更好,压力更小。您的应用程序将受益更多,您的客户也将受益。

一个月左右之后,在我需要设置页面样式之前,我不会使用浏览器。更快,更高效。

就个人而言,我开始阅读本教程:

而且,和以往一样,以下RailsCasts也有很大的帮助:

在你的情况下,尝试这样的事情(没有FactoryGirl)。

describe "GET new" do
 it "assigns a new release as @release" do
   game = Game.create!( << INSERT VALID ATTRIBUTE >> )
   get :new, {:game_id => game.id}, valid_session
   assigns(:release).should be_a_new(Release)
 end
end

我认为这是对的,没有测试过自己。还有其他一些方法可以做到这一点,包括把游戏创建方法放在过滤器之前:

 before(:each) do
   @game = Game.create!( << INSERT VALID ATTRIBUTE >> )
 end

或者,就像我说的那样,使用Factory Girl为你构建模型。

这就是我们这样做的方式。