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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

1回答

1057閲覧

Railsチュートリアル10.63 ユーザー削除のテストが通りません

menmanegi_ayaka

総合スコア10

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2019/09/28 02:23

10.63テストが通りません

Railsチュートリアルの10章
10.4.3 ユーザー削除のテストにて
テストが通らずつまづいています。
教えて頂けると幸いです(; ;)
よろしくお願いいたします。

発生している問題・エラーメッセージ

Running via Spring preloader in process 8870 Started with run options --seed 11876 FAIL["test_index_as_admin_including_pagination_and_delete_links", UsersIndexTest, 1.1001858529998572] test_index_as_admin_including_pagination_and_delete_links#UsersIndexTest (1.10s) <delete> expected but was <User 19>.. Expected 0 to be >= 1. test/integration/users_index_test.rb:19:in `block (2 levels) in <class:UsersIndexTest>' test/integration/users_index_test.rb:16:in `block in <class:UsersIndexTest>' 39/39: [==========] 100% Time: 00:00:01, Time: 00:00:01 Finished in 1.21352s 39 tests, 105 assertions, 1 failures, 0 errors, 0 skips

該当のソースコード

ruby

1#sample_app/users_index_test.rb 2require 'test_helper' 3 4class UsersIndexTest < ActionDispatch::IntegrationTest 5 6 def setup 7 @admin = users(:michael) 8 @non_admin = users(:archer) 9 end 10 11 test "index as admin including pagination and delete links" do 12 log_in_as(@admin) 13 get users_path 14 assert_template 'users/index' 15 assert_select 'div.pagination' 16 first_page_of_users = User.paginate(page: 1) 17 first_page_of_users.each do |user| #<=16行目 18 assert_select 'a[href=?]', user_path(user), text: user.name 19 unless user == @admin 20 assert_select 'a[href=?]', user_path(user), text: 'delete' #<=19行目 21 end 22 end 23 assert_difference 'User.count', -1 do 24 delete user_path(@non_admin) 25 end 26 end 27 28 test "index as non-admin" do 29 log_in_as(@non_admin) 30 get users_path 31 assert_select 'a', text: 'delete', count: 0 32 end 33end

試したこと

参照https://kotaeta.com/61946369
test "index as admin including pagination and delete links"を
下記の通りに変更してみましたが…

ruby

1 User.paginate(page: 1).each do |user| 2 if user.activated? 3 assert_select 'a[href=?]', user_path(user), text: user.name 4 unless user == @admin 5 assert_select 'a[href=?]', user_path(user), text: 'delete' 6 end 7 else 8 assert_select 'a[href=?]', user_path(user), text: user.name, count: 0 9 end 10 end

NoMethodError: undefined method `activated?' とうエラーが出ました。


sample_app/users_index_test.rb
下記の部分をコメントアウトするとテストが通ります。

ruby

1 first_page_of_users = User.paginate(page: 1) 2 first_page_of_users.each do |user| 3 assert_select 'a[href=?]', user_path(user), text: user.name 4 unless user == @admin 5 assert_select 'a[href=?]', user_path(user), text: 'delete' 6 end 7 end 8 assert_difference 'User.count', -1 do 9 delete user_path(@non_admin) 10 end

補足情報(FW/ツールのバージョンなど)

cloud9
Ruby5.1.6

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

yml

1#test/fixtures/users.yml 2 3michael: 4 name: Michael Example 5 email: michael@example.com 6 password_digest: <%= User.digest('password') %> 7 admin: true #<=ここが抜けていました 8 9archer: 10 name: Sterling Archer 11 email: duchess@example.gov 12 password_digest: <%= User.digest('password') %> 13 14lana: 15 name: Lana Kane 16 email: hands@example.gov 17 password_digest: <%= User.digest('password') %> 18 19mallory: 20 name: Mallory Archer 21 email: boss@example.gov 22 password_digest: <%= User.digest('password') %> 23 24<% 30.times do |n| %> 25user_<%= n %>: 26 name: <%= "User #{n}" %> 27 email: <%= "user-#{n}@example.com" %> 28 password_digest: <%= User.digest('password') %> 29<% end %>

9.4.3ユーザー削除のテスト
michaelさんのadmin: trueという行が抜けていました!

投稿2019/09/28 04:29

menmanegi_ayaka

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問