現在RSpec、及びfactory_botを使用して記事一覧表示機能のインスタンス変数のテストをしています。
下記の通り、エラーが出てしまいますが、リファレンスや他の方の記事を参照しましたが、何か原因なのか分からず作業が止まってしましました。
恐れ入りますが、何か知見がありましたらご教授お願いいたします。
現在起きているエラー内容
ArticlesController GET #index @articlesに正しい値が入っていること Failure/Error: expect(assigns(:articles)).to match(articles.sort{ |a, b| b.created_at <=> a.created_at } ) expected #<ActiveRecord::Relation [#<Article id: 39, title: "title", content: "content", created_at: "2020-11-...nt: "content", created_at: "2020-11-29 05:49:42", updated_at: "2020-11-30 14:07:15", user_id: 101>]> to match [#<Article id: 38, title: "title", content: "content", created_at: "2020-11-30 04:17:41", updated_at: "2020-11-30 14:07:15", user_id: 102>, #<Article id: 37, title: "title", content: "content", created_at: "2020-11-29 05:49:42", updated_at: "2020-11-30 14:07:15", user_id: 101>, #<Article id: 39, title: "title", content: "content", created_at: "2020-11-28 18:26:23", updated_at: "2020-11-30 14:07:15", user_id: 103>] Diff: @@ -1,4 +1,22 @@ -[#<Article id: 38, title: "title", content: "content", created_at: "2020-11-30 04:17:41", updated_at: "2020-11-30 14:07:15", user_id: 102>, - #<Article id: 37, title: "title", content: "content", created_at: "2020-11-29 05:49:42", updated_at: "2020-11-30 14:07:15", user_id: 101>, - #<Article id: 39, title: "title", content: "content", created_at: "2020-11-28 18:26:23", updated_at: "2020-11-30 14:07:15", user_id: 103>] +[#<Article:0x00007fe661c6b750 + id: 39, + title: "title", + content: "content", + created_at: Sun, 29 Nov 2020 03:26:23 JST +09:00, + updated_at: Mon, 30 Nov 2020 23:07:15 JST +09:00, + user_id: 103>, + #<Article:0x00007fe661c6b688 + id: 38, + title: "title", + content: "content", + created_at: Mon, 30 Nov 2020 13:17:41 JST +09:00, + updated_at: Mon, 30 Nov 2020 23:07:15 JST +09:00, + user_id: 102>, + #<Article:0x00007fe661c6b5c0 + id: 37, + title: "title", + content: "content", + created_at: Sun, 29 Nov 2020 14:49:42 JST +09:00, + updated_at: Mon, 30 Nov 2020 23:07:15 JST +09:00, + user_id: 101>] # ./spec/controllers/articles_controller_spec.rb:30:in `block (3 levels) in <top (required)>'
アソシエーション
//user.rb has_many :articles, dependent: :destroy //article.rb belongs_to :user
articles_controller_spec.rb
describe 'GET #index' do it "@articlesに正しい値が入っていること" do articles = create_list(:article, 3) get :index expect(assigns(:articles)).to match(articles.sort{ |a, b| b.created_at <=> a.created_at } ) end
articles_controller.rb
def index @articles = Article.includes(:user).order(id: "DESC").page(params[:page]).per(10) end
factories/articles.rb
FactoryBot.define do factory :article do title {"title"} content {"content"} created_at { Faker::Time.between(from: DateTime.now - 2, to: DateTime.now) } user end end
factories/users.rb
FactoryBot.define do factory :user do nickname {"abe"} password {"00000000"} password_confirmation {"00000000"} sequence(:email) {Faker::Internet.email} end end
環境
Rails 6.0.3.4
Ruby 2.6.6
rspec-rails 4.0.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/01 02:55