我有一个有一些版本的游戏模型(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错误。
所以我的问题是如何设置游戏对象来表达嵌套资源?
答案 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为你构建模型。
这就是我们这样做的方式。