7

我刚刚开始使用 RSpec,并且在为嵌套资源编写控制器测试时遇到了一些困难。我试过用谷歌搜索这个,但没有太多运气。

有人可以提供一个“PUT 更新”测试测试的基本示例,以确保更新嵌套资源吗?只是为了详细说明,我有这样的等效(非嵌套)资源测试:

  def mock_post(stubs={})
    @mock_post ||= mock_model(Post, stubs).as_null_object
  end
  ...

  describe "PUT update" do
      describe "with valid parameters" do
        it "updates the requested post" do
          Post.stub(:find).with("14") { mock_post }
          mock_post.should_receive(:update_attributes).with({'these' => 'params'})
          put :update, :id => "14", :post => {'these' => 'params'}
        end
      end
  end

一段时间以来,我一直在尝试为嵌套在 Post 下的“评论”模型正确地存根类似的测试,但没有任何乐趣。任何建议表示赞赏。

4

1 回答 1

12

您需要将两个 id 都传递给您的 put 方法

put :update, :id => "14", :post_id=> "1", :comment => {'these' => 'params'}
于 2011-01-13T16:56:18.980 回答