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

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

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

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

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Ruby on Rails

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

ユニットテスト

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

Q&A

0回答

475閲覧

Railsでのmodelの有効性テストがどうしてもエラーが出て通過しできない。

helo

総合スコア36

Ruby

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

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Ruby on Rails

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

ユニットテスト

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

0グッド

0クリップ

投稿2019/12/08 04:49

編集2019/12/08 09:15
class UserTest < ActiveSupport::TestCase def Setup @user = User.new(name: "Example User", email: "user@example.com") end test "should be valid" do assert_equal @user.valid? end test "name should be present" do @user.name = " " assert_not @user.valid? end test "email should be present" do @user.email = " " assert_not @user.valid? end end ーーーーーーーーーーーーーーーーーーーーーーー class User < ApplicationRecord validates :name, presence: true validates :email, presence: true end ```### 前提・実現したいこと 現在、Railsチュートリアルの第6章にて、name、email等の賊子の検証テストを行っているのですが、どうしても、No Method errorが出て2か所パスが出来ません。いろいろ他サイトを調べたのですが、適切な答えが見つからず前に進めません。 お詳しい方いらっしゃいましたら、ご教示頂けませんでしょうか、よろしくお願いします。 ### 発生している問題・エラーメッセージ

$ rails t
Started with run options --seed 19323

ERROR["test_name_should_be_present", UserTest, 0.8290709999855608]
test_name_should_be_present#UserTest (0.83s)
NoMethodError: NoMethodError: undefined method name=' for nil:NilClass test/models/user_test.rb:13:in block in class:UserTest'

ERROR["test_email_should_be_present", UserTest, 0.8330029000062495]ETA: 00:00:01
test_email_should_be_present#UserTest (0.83s)
NoMethodError: NoMethodError: undefined method email=' for nil:NilClass test/models/user_test.rb:18:in block in class:UserTest

### 該当のソースコード `` app/test/models/user_test.rbファイル        ↓ ''' require_relative '../test_helper' class UserTest < ActiveSupport::TestCase def Setup @user = User.new(name: "Example User", email: "user@example.com") end test "should be valid" do assert_equal @user.valid? end test "name should be present" do @user.name = " " assert_not @user.valid? end test "email should be present" do @user.email = " " assert_not @user.valid? end end ''' app/models/user.rbファイル     ↓ ''' class User < ApplicationRecord validates :name, presence: true validates :email, presence: true end '''

試したこと

エラー表示を見ていると未定義のname = "" , email = ""の2か所と出るのですが
assert_equal @user.valid?
assert_not @user.valid?
これらのvalid?メソッドについても同じく未定義のエラーが発生します。
この際のエラーメッセセージは掲載しておりませんが、上記と同じレベルの内容です。
どうにもやりようがなく途方に暮れた状態です。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

winterboum

2019/12/08 05:32

テストcodeにちと不審な点があるのですが、表示の乱れのためなのか確信が持てません。 <CEODE> を使ってソースファイルをコピペしていただけますか
urbainleverrier

2019/12/08 06:08

`setup do; some test codes; end`と言った具合にブロックで記載してみてもダメですか?
winterboum

2019/12/08 06:56

実際のプログラムがどうなのか、もあるので、コピペしていただくのがうれしいです。 <code>で囲むとインデントなども保存されるので読みやすいですし
helo

2019/12/08 08:48

winterboum様 コメントありがとうございます。現在、投稿しているソースコードが app/models/user.rb そして、app/test/user_test.rbの各ファイルの内容なのですが、その他にどのディレクトリのファイルがあれば良いでしょうか?ご指示いただければ幸いです。よろしくお願いshます。
winterboum

2019/12/08 08:52

そのプログラムを<code>で囲んで読みやすく、オリジナルのものと同じになるようにしてくれ、と頼んでます。 1行に「class UserTest < ActiveSupport::TestCase def Setup」とあってエラーにならないわけがないので、実際のプログラムとは異なる形で標示されてると思うので、実際のプログラムを見せてくれと、
helo

2019/12/08 08:54

paulhindemith様 コメントありがとうございます。 書かれてられるブロックでの記述はどのファイルに記述するのでしょうか? あまり熟練者ではありませんで申し訳ありません。 詳しく説明頂けると助かります。 よろしくお願いします。
helo

2019/12/08 08:56

winterboum様 ああ、そういう事なんですね。 承知しました。ちょっと修正してみます。
winterboum

2019/12/08 08:56

半角の逆シングルコーテーション3こで囲んで下さい ``` ここにプログラムをコピペ ``` というように
helo

2019/12/08 09:04

winterboum様 ええ・・・と、<code>タグで囲んでみたのですが、いかがでしょうか? また、シングルクオーテーション3つで囲む方もやってみます。
winterboum

2019/12/08 09:09

なんか変だな。。。 一度ソース消してやりなおしてみて。<code>といったのは、そういうボタンないですか それをクリックすると``` で囲むcode入力エリア```がでてきます。 他の方のcodeが綺麗に表示されているのをみて、そのようになるか自分で確認して下さい
helo

2019/12/08 09:15

winterboum様 こちらでどうでしょうか?
helo

2019/12/08 12:45

winterboum様 このサイトの仕様があまり分かっておらずすいませんでした。 きちんとソースコードは最上部に見えていると思いますのでよろしくお願いします。
urbainleverrier

2019/12/08 15:05

``` def Setup # your codes end ``` ではなく、 ``` setup do # your code end ``` ということです。
winterboum

2019/12/08 22:50

paulhindemithさん、それ回答に書いて。
helo

2019/12/10 12:40

paulhindemith様 回答ありがとうございます。 setup do ~ end にて、確かにテストはパスしました。 そういう事と初めて気づきました。大変感謝いたします。 本当にありがとうございました。引き続き頑張ります。 それから、winterboum様の言われますように回答に書いていただけないでしょうか? そうでないとこの投稿ページが終われないと思いますので。 お手間と思いますが、何卒よろしくお願い致します。m(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問