Rspec:测试时不应该通过

时间:2014-05-02 02:20:10

标签: ruby-on-rails ruby ruby-on-rails-3 rspec

第二次测试通过罚款,第一次没有。不知道为什么。

require 'spec_helper'

RSpec.describe UserNotesController do

  context 'GET #index' do

    let(:note) { build(:user_note) }

    specify 'populates an array of notes' do
      expect(:user_notes).to eq [note]
    end

    specify 'renders the :index view' do
      get :index
      expect(response).to render_template :index
    end
  end
end

不确定为什么它没有通过,但我收到了这条消息。

(compared using ==)

Diff:
@@ -1,2 +1,2 @@
-[#<UserNote id: nil, user_id: 2, creator_id: nil, note: "Magnam quas fugit nihil.", created_at: nil, updated_at: nil, follow_up: nil>]
+:user_notes

我对Rspec很新。有什么帮助吗?

1 个答案:

答案 0 :(得分:3)

要在rspect测试中访问实例变量@foo,请使用assigns(:foo)

引用它
expect(assigns(:user_notes)).to eq [note]

您还错过了对该操作的调用。它应该是......

get :index
expect(assigns(:user_notes)).to eq [note]

最后,let(:note) { build(:user_note) }是懒惰的,并且在引用变量之前不会执行...这只是在get:index之后,并且build不会保存到数据库中case,所以把它改成......

let!(:note) { create(:user_note) }