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

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

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

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

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

849閲覧

ユーザーエラーの解決ができないrails

neko1

総合スコア4

Ruby

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

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/10/03 02:17

編集2020/10/03 04:04

自分なりに調べてみましたが、解決できませんでした。
それぞれのエラー文で

railsチュートリアルを参考にポートフォリオを作っていましたが、このようなエラーが発生しました。
エラー写真

●下記に関連あるファイルのコードを載せました。(エラー写真の昇順)

1つ目
エラーは「"user@example.com" should be valid」とあるが、下の写真の「valid_addresses」の中に「user@example.com」はあるため、なぜ有効化せれていないかわからない。
user_test
2、3つ目
「expecting <"users/edit"> but rendering with <[]>」
つまり、<"users/edit">を期待していたが、<[]>何もなかったよ。と、
そのまま写したのを何度も確認しているので、記述忘れはないかと思います。
users_edit_test
4つ目
"User.count" didn't change by 1./Expected: 5/Actual: 4
つまり、ユーザー数が1人足りていません。と、後1人足りていない人がわからない。
下の「'User.count', 1 do」の1を上げていくと、「Expected:」も増えていく。
users_signup_test
5、6つ目
「Expected nil (NilClass) to respond to #empty?.」=「nilが空であれ。」
ログインするときは、@userの記憶するのは、1なら保存してログインするが、0なら削除してログインする。
user_login_test

私の認識も入れておきましたが、おそらく合っていると思いますので、参考になると思い入れました。
アンサーは解決方法を教えて欲しいです。
他に必要な情報があれば、送ります。

よろしくお願いします。

追記
「app/models/user.rb」を追加しました。
app/models/user.rb

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

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

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

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

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

guest

回答1

0

ベストアンサー

テストに対する考え方が間違っているため、正解には辿り着くことできない状態です。

まず、これらはエラー文ではありません。これらはテストの失敗であり、通常のエラーとは区別できていなければなりません。

次に、テストとは何か、その上、なぜ、テストを実施するのか、そして、その成功と失敗は何を意味しているのかを正しく理解していなければなりません。

テストは、実装が想定通りに動作するかを確認することです。テストを実施することで、実装が想定通りであるかを確認します。テストの成功や失敗には次のような意味があります。

【テストが成功する】

  • 想定通りの実装になっている。
  • 想定通りの実装ではないが、テストが間違っているため、成功の結果になる。
  • 実装に関わらず、テストが間違っているため、常に成功するようになっている。

テストが成功しても、実装が完璧であることを意味しません。ほぼ全ての場合で実施すべきテストが抜けているからです。

【テストが失敗する】

  • 実装が間違っていて、想定通りの動作をしない。
  • 想定通りの実装になっているが、テストが間違っているため、失敗の結果になる。
  • 実装にかからず、テストが間違っているため、常に失敗するようになっている。

ほとんどの場合、テストに失敗するのは実装が間違っている場合です。しかし、テスト自体が間違っている可能性について常に意識すべきです。

テストは全て成功になるべきですが、失敗したときの対処は二つの視点から見る必要があります。

  • (1) テスト自体が正しいか?

そのテストが何をするのかを説明できなければ無意味です。なぜなら、そのテストが正しいかどうかを判断できないからです。そのうえで、テストの内容自体が正しいかを確認します。よくあるのは、逆の判定をしてしまっている場合です。

  • (2) 実装が正しいか?

テストが正しいのに失敗すると言うことは実装が間違っています。実装を細かく見ていくしかありません。時にはデバッグしながらみるとか、より細かい部分をみるテストを追加するとかも必要かも知れません。

そうやって、テストを一つ一つ成功になるようにしていきます。なお、成功したからと言って大丈夫とは限らず、テスト自体が間違っている可能性は常に意識すべきです。


さて、上を踏まえてです。質問ではテストだけを見ているように見えますが、テストに対する見方が違います。まず、想定している動作があるはずです。その想定している動作をテストするようなないようになっているかどうかでテストを見る必要があります。たとえば、assert @user.valid? "..."が正しいかどうかは、これは何をするテストで、validになるのが正常なのか、それとも異常なのか、把握して、それで、テスト自体が正しいか間違っているかを考えます。テストの意味がわからないのであれば、テスト自体に価値がありません。

次に、テストが正しいとなった場合、間違っているのは実装側です。Userモデルのバリデーションの確認のようなので、そのあたりがおかしいのかも知れません。今度はそっちの実装を見てみないとわかりません。つまり、一つ目ですら、これだけではよくわからず、すくなくともUserの実装部分が必要でしょう。場合によってはもっと色々見る必要かも知れません。

Railsは複数ファイルに絡んでいる場合が多いため、単純に解決しようにも全体がないと見えてこない場合も多いです。全部を一度に解決するには全て公開して貰わないと無理でしょう。ひとまず、やることの視点は書いたつもりです。あとはこれに基づいて、一つ一つ解決していってください。

投稿2020/10/03 02:55

raccy

総合スコア21739

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

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

neko1

2020/10/03 04:18 編集

とても丁寧にありがとうございます。 テストは苦手意識があり、あまり理解できずに進めていました。おっしゃっていることは理解できましたし、全て納得できました。きちんと向き合って実装とテストを理解していけるようにします。 たった今!raccyさんのおかげで、signupの1つ解決できました!涙 他のも取り掛かってみますが、それでもどうしてもわからなければまたアドバイス頂きたいです。 同じ容量でやってみます!
neko1

2020/10/03 06:36

今全ての失敗がなくなり、成功しました!! ありがとうございます。orz
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問