0

rspec テストのエラーを解決するための助けが必要です。tag_list の配列を作成するための factory または controller_spec を構築する正しい方法が見つかりません。

モデル:

class Record < ActiveRecord::Base
  #Associations
  belongs_to :user

  # Validations
  validates :title, :user, presence: true

  # Alias for acts_as_taggable_on :tags
  acts_as_taggable
end

コントローラー仕様:

require 'rails_helper'

describe RecordsController do
  let(:record) { create(:record) }
  let(:title) { "Some title I would like to put in my record" }
  let(:description) { "description I would like to put in my record" }
  let(:tag_list) { ["tag", "list", "I", "would", "like", "to", "put", "in", "my", "record"] }


  describe "#create" do
    it "creates a new record with the given title, description and tag_list" do
      expect do
        post :create, record: { title: title, description: description, tag_list: tag_list }
      end.to change { Record.count }.by(1)

      expect(response).to redirect_to(assigns[:record])

      expect(assigns[:record].title).to eq(title)
      expect(assigns[:record].description).to eq(description)
      expect(assigns[:record].tag_list).to eq(tag_list)

    end

    it "fails to create a record and returns to the index page" do
      expect(post :create, record: { description: description, tag_list: tag_list }).to render_template(:index)
      expect(assigns[:records]).to eq(Record.all)
    end
  end
end

コントローラ:

class RecordsController < ApplicationController

  def create
    @record = Record.new(record_params)

    if @record.save
      redirect_to @record
    else
      @records = Record.all
      render 'index'
    end
  end

  private

    def record_params
      params.require(:record).permit(:title, :description, :tag_list).merge(user: current_user)
    end
end

工場:

FactoryGirl.define do
  factory :record do
    title 'record title'
    description 'record description'
    tag_list [create(:tag), create(:tag)]
    user
  end
end

テストからのエラー:

RecordsController
  #create
    creates a new record with the given title, description and tag_list (FAILED - 1)
    fails to create a record and returns to the index page

Failures:

  1) RecordsController#create creates a new record with the given title, description and tag_list
     Failure/Error: expect(assigns[:record].tag_list).to eq(tag_list)

       expected: ["tag", "list", "I", "would", "like", "to", "put", "in", "my", "record"]
            got: []

       (compared using ==)
4

1 に答える 1