質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

UIテスト

UIテストは、エンドツーエンドのテストのことで、人間がチェックする際と同じ内容をテストが自動で行います。UIの操作はもちろん、サーバーへのレスポンスやリクエスト、サーバーでのロジック処理など、全レイヤーを通してテストすることが可能。汎用性が高い点も特長です。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

解決済

railsのテスト時のassert_selectであるはずのものが見つからないエラー

mugichon
mugichon

総合スコア61

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

UIテスト

UIテストは、エンドツーエンドのテストのことで、人間がチェックする際と同じ内容をテストが自動で行います。UIの操作はもちろん、サーバーへのレスポンスやリクエスト、サーバーでのロジック処理など、全レイヤーを通してテストすることが可能。汎用性が高い点も特長です。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

1回答

0リアクション

0クリップ

1267閲覧

投稿2020/06/27 01:30

railsのテストを作成しています。
railsチュートリアル5.1版に従い、10.48まで進みましたが、ここでテストを行うと存在すべきuserのURLが無くエラーとなります。

users_index_test.rb

test "index including pagination" do log_in_as(@user) get users_path assert_template 'users/index' assert_select 'div.pagination', count: 2 User.paginate(page: 1).each do |user| assert_select 'a[href=?]', user_path(user), text: user.name end end

error

FAIL["test_index_including_pagination", Minitest::Result, 1.055881918000523] test_index_including_pagination#Minitest::Result (1.06s) Expected at least 1 element matching "a[href="/users/1028376774"]", found 0.. Expected 0 to be >= 1. test/integration/users_index_test.rb:23:in `block (2 levels) in <class:UsersIndexTest>' test/integration/users_index_test.rb:21:in `block in <class:UsersIndexTest>'

本当にURLが存在しないのかと思い、エラー該当箇所前に検索対象URLを出力するコードを入れてみたのですが、存在しているようでした。

test "index including pagination" do log_in_as(@user) get users_path assert_template 'users/index' assert_select 'div.pagination', count: 2 #debugger User.paginate(page: 1).each do |user| puts "NAME:" + user.name + " PATH:" + user_path(user) + " ADMIN?:" + user.admin.to_s end User.paginate(page: 1).each do |user| assert_select 'a[href=?]', user_path(user), text: user.name end end
NAME:Sterling Archer PATH:/users/950961012 ADMIN?:false ] 11% Time: 00:00:00, ETA: 00:00:04 NAME:Lana Kane PATH:/users/409608538 ADMIN?:false NAME:Malory Archer PATH:/users/659682706 ADMIN?:false NAME:User 0 PATH:/users/338193910 ADMIN?:false NAME:User 1 PATH:/users/590306657 ADMIN?:false NAME:User 2 PATH:/users/975572189 ADMIN?:false NAME:User 3 PATH:/users/220281934 ADMIN?:false NAME:User 4 PATH:/users/323332591 ADMIN?:false NAME:User 5 PATH:/users/608344442 ADMIN?:false NAME:User 6 PATH:/users/1028376774 ADMIN?:false NAME:User 7 PATH:/users/172816471 ADMIN?:false NAME:User 8 PATH:/users/452191684 ADMIN?:false NAME:User 9 PATH:/users/771020115 ADMIN?:false NAME:User 10 PATH:/users/956993830 ADMIN?:false NAME:User 11 PATH:/users/235774389 ADMIN?:false NAME:User 12 PATH:/users/386199561 ADMIN?:false NAME:User 13 PATH:/users/537116830 ADMIN?:false NAME:User 14 PATH:/users/1046959423 ADMIN?:false NAME:User 15 PATH:/users/157312430 ADMIN?:false NAME:User 16 PATH:/users/275330066 ADMIN?:false NAME:User 17 PATH:/users/661521543 ADMIN?:false NAME:User 18 PATH:/users/936450328 ADMIN?:false NAME:User 19 PATH:/users/14035331 ADMIN?:false NAME:User 20 PATH:/users/304595689 ADMIN?:false NAME:User 21 PATH:/users/622916212 ADMIN?:false NAME:User 22 PATH:/users/1009361868 ADMIN?:false NAME:User 23 PATH:/users/187601757 ADMIN?:false NAME:User 24 PATH:/users/357172992 ADMIN?:false NAME:User 25 PATH:/users/575485547 ADMIN?:false NAME:User 26 PATH:/users/994338771 ADMIN?:false FAIL["test_index_including_pagination", Minitest::Result, 0.573080492002191] test_index_including_pagination#Minitest::Result (0.57s) Expected at least 1 element matching "a[href="/users/1028376774"]", found 0.. Expected 0 to be >= 1. test/integration/users_index_test.rb:23:in `block (2 levels) in <class:UsersIndexTest>' test/integration/users_index_test.rb:21:in `block in <class:UsersIndexTest>'

URLは間違いなく存在していますが、assert_selectでエラー…もう、訳が分かりません。

どなたか、原因が分かりますでしょうか?

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

UIテスト

UIテストは、エンドツーエンドのテストのことで、人間がチェックする際と同じ内容をテストが自動で行います。UIの操作はもちろん、サーバーへのレスポンスやリクエスト、サーバーでのロジック処理など、全レイヤーを通してテストすることが可能。汎用性が高い点も特長です。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。