1. ホーム
  2. ruby-on-rails

[解決済み] rspecにおけるassignsの意味

2022-02-09 19:38:24

質問

このコードの行は何をする行ですか?

assigns(:articles).should eq([article])

は、次のようなRSPECになります。

  describe "GET #index" do
    it "populates an array of articles" do
      article = Factory(:article)
      get :index
      assigns(:articles).should eq([article])
    end

    it "renders the :index view" do
      get :index
      response.should render_template :index
    end
  end

解決方法は?

assigns は、コントローラのアクション内で作成された (そしてビューに割り当てられた) インスタンス変数に関連しています。


というのは、コメントでのご指摘にお答えするためですね。

  • 1) インデックスアクションは次のようになります。 @articles = Articles.all (ページネーションが使えるといいのですが)

  • 2) 上記の仕様ブロックの前に、dbに1つの記事が作成されている (または、dbのクエリをdbにスタブしていることを期待します)

  • 1 + 2 => @articles は1つの記事を含むべきであり、それがあなたの期待する仕様です。