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

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

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

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

Q&A

解決済

2回答

4984閲覧

ruby on railsのエラーが解決できない

kinu221

総合スコア26

Ruby on Rails 5

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

0グッド

0クリップ

投稿2018/01/20 13:38

編集2018/01/22 08:37

rails初心者です。
ruby on railsにてrails testを実行すると下記のエラーが表示されます。
どこが間違っているのかわからないので、アドバイスをいただけますか?
<環境>
cloud9

<エラー>
method': undefined method test_should_get_home' for class `Minitest::Result' (NameError)

<ソースコード>
[static_pages_controller_test]
require 'test_helper'
class StaticPagesControllerTest < ActionDispatch::IntegrationTest

def setup
@base_title = "Ruby on Rails Tutorial Sample App"
end

test "should get root" do
get root_url
assert_response :success
end

test "should get home" do
get root_path
assert_response :success
assert_select "title", "Ruby on Rails Tutorial Sample App"
end

test "should get help" do
get help_path
assert_response :success
assert_select "title", "Help | Ruby on Rails Tutorial Sample App"
end

test "should get about" do
get about_path
assert_response :success
assert_select "title", "About | Ruby on Rails Tutorial Sample App"
end

test "should get contact" do
get contact_path
assert_response :success
assert_select "title", "Contact | Ruby on Rails Tutorial Sample App"
end
end

[routes.rb]
Rails.application.routes.draw do
root 'static_pages#home'
get '/help', to: 'static_pages#help'
get '/about', to: 'static_pages#about'
get '/contact', to: 'static_pages#contact'
get '/signup', to: 'users#new'
end

[static_pages_controller]
class StaticPagesController < ApplicationController
def home
end

def help
end

def about
end

def root
end

def contact
end
end

[contact.html.erb]
<% provide(:title, 'Contact') %>

<h1>Contact</h1> <p> Contact the Ruby on Rails Tutorial about the sample app at the <a href="https://railstutorial.jp/contact">contact page</a>. </p>

[home.html.erb]

<div class="center jumbotron"> <h1>Welcome to the Sample App</h1> <h2> This is the home page for the <a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a> sample application. </h2>

<%= link_to "Sign up now!", signup_path, class: "btn btn-lg btn-primary" %>

</div>

<%= link_to image_tag("rails.png", alt: "Rails logo"),
'http://rubyonrails.org/' %>

[user_test.rb]
require 'test_helper'

class UserTest < ActiveSupport::TestCase

def setup
@user = User.new(name: "Example User", email: "user@example.com",
password: "foobar", password_confirmation: "foobar")
end
test "should be valid" do
assert @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

test "name should not be too long" do
@user.name = "a" * 51
assert_not @user.valid?
end

test "email should not be too long" do
@user.email = "a" * 244 + "@example.com"
assert_not @user.valid?
end

test "email validation should accept valid addresses" do
valid_addresses = %w[user@example.com USER@foo.COM A_US-ER@foo.bar.org
first.last@foo.jp alice+bob@baz.cn]
valid_addresses.each do |valid_address|
@user.email = valid_address
assert @user.valid?, "#{valid_address.inspect} should be valid"
end
end

test "email validation should reject invalid addresses" do
invalid_addresses = %w[user@example,com user_at_foo.org user.name@example.
foo@bar_baz.com foo@bar+baz.com]
invalid_addresses.each do |invalid_address|
@user.email = invalid_address
assert_not @user.valid?, "#{invalid_address.inspect} should be invalid"
end
end

test "email addresses should be unique" do
duplicate_user = @user.dup
duplicate_user.email = @user.email.upcase
@user.save
assert_not duplicate_user.valid?
end

test "email addresses should be saved as lower-case" do
mixed_case_email = "Foo@ExAMPle.CoM"
@user.email = mixed_case_email
@user.save
assert_equal mixed_case_email.downcase, @user.reload.email
end

test "password should be present (nonblank)" do
@user.password = @user.password_confirmation = " " * 6
assert_not @user.valid?
end

test "password should have a minimum length" do
@user.password = @user.password_confirmation = "a" * 5
assert_not @user.valid?
end
end

お手数ですが、ご回答よろしくお願い致します。

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

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

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

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

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

Shara

2018/01/21 00:05

home.html.erb のソースも記載をお願い出来ますか?
kinu221

2018/01/21 04:54

ご連絡ありがとうございます。承知致しました。質問内容に追記致しました。
guest

回答2

0

ベストアンサー

とりあえず

undefined method 云々 for class `Minitest::Result' (NameError)

というエラー自体は minitest のバグに起因するようです。
下記への回答に書きましたので,ご参照ください。
Ruby - minitestでテストが失敗したとき1 runs, 2 assertions, 1 failures...というような表示が出ない(110066)|teratail

そこに書いたとおり,本件では minitest に issue が立っています。

ちなみに minitest と railties のバージョンはいくつですか。
このバージョンの組み合わせでテストが死ぬようです。minitest 5.11.0 もしくは 5.11.1 と railties 5.1.4 の組み合わせで死にます。

調べた範囲では,このような現象が起こるのは,テストが failed だったか,エラーを出したときです。
なので,undefined method というメッセージの前にテストの失敗かエラーかのメッセージがでてると思うのですが,出てませんか?

投稿2018/01/22 12:19

scivola

総合スコア2108

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

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

kinu221

2018/01/22 13:21

ご回答ありがとうございます。 >undefined method というメッセージの前にテストの失敗かエラーかのメッセージがでてると思うのですが,出てませんか? →以下のエラーの内容がありましたので、記載致します。 ERROR["test_email_addresses_should_be_unique", Minitest::Result, 0.04406130802817643] test_email_addresses_should_be_unique#Minitest::Result (0.04s) NoMethodError: NoMethodError: undefined method `password_digest=' for #<User:0x00000005119748> Did you mean? password= test/models/user_test.rb:6:in `setup' E 19/0: [ ] 0% Time: 00: Error: UserTest#test_email_addresses_should_be_unique: NoMethodError: undefined method `password_digest=' for #<User:0x00000005119748> Did you mean? password= test/models/user_test.rb:6:in `setup' minitestによるエラーだと思います。 > minitest と railties のバージョンはいくつですか。 gem listで確認しましたがrailtiesとminitestのバージョンは表示されませんでした。 gemfileで設定しているtestの内容は以下になります。 group :test do gem 'rails-controller-testing', '1.0.2' gem 'minitest-reporters', '1.1.14' gem 'guard', '2.13.0' gem 'guard-minitest', '2.4.4' end お手数ですが、アドバイスをお願い致します。
scivola

2018/01/22 15:17

password_digest= が無いと言っていますね。 User に password_digest というカラムはありますか。 また,gem list で出てこないのは変ですね。
kinu221

2018/01/23 06:50

御回答ありがとうございます。 User に password_digest というカラムはありますか。 >あります。どこでミスっているのかわからないです。 def change add_column :users, :password_digest, :string end gem list で出てこないのは変ですね。 >gemfileの設定がうまくいっていないと出るとの情報がありましたので、 もう一度installし直してみます。
scivola

2018/01/23 09:02

とりあえず minitest のバグに関しては Gemfile に gem "minitest", "5.10.3" とかってダウングレードしてやればエラーは出なくなると思います。 直るまではこれでしのぐといいかもしれません。
kinu221

2018/01/23 14:19

御回答ありがとうございます。 minitestのバグは解消したと思います。 ただ、下記のエラーが取れないので苦戦しています。 アドバイスをいただけると幸いです。 Running via Spring preloader in process 23999 Started with run options --seed 23549 Run options: --seed 23549--=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=---=-] 0% Time: 00:00:00, ETA: ??:??:?? # Running: . 16/2: [======================= ] 12% Time: 00:00:00, ETA: 00:00:0.. 16/4: [================================================= ] 25% Time: 00:00:00, ETA: 00:00:... 16/7: [===================================================================================== ] 43% Time: 00:00:00, ETA: 00:00... 16/10: [========================================================================================================================== ] 62% Time: 00:00:00, ETA: 00:00 FAIL["test_should_get_about", StaticPagesControllerTest, 0.5537721600849181] test_should_get_about#StaticPagesControllerTest (0.55s) <About | Ruby on Rails Tutorial Sample App> expected but was <Ruby on Rails Tutorial Sample App>.. Expected 0 to be >= 1. test/controllers/static_pages_controller_test.rb:19:in `block in <class:StaticPagesControllerTest>' F 16/11: [====================================================================================================================================== ] 68% Time: 00:00:00, ETA: 00:00:00 Failure: StaticPagesControllerTest#test_should_get_about [/home/ubuntu/workspace/sample_app/test/controllers/static_pages_controller_test.rb:19]: <About | Ruby on Rails Tutorial Sample App> expected but was <Ruby on Rails Tutorial Sample App>.. Expected 0 to be >= 1. bin/rails test test/controllers/static_pages_controller_test.rb:16 . 16/14: [============================================================================================================================================================================ ] 87% Time: 00:00:00, ETA: 00:00:0 FAIL["test_layout_links", SiteLayoutTest, 0.5785298310220242] test_layout_links#SiteLayoutTest (0.58s) Expected exactly 2 elements matching "a[href="/"]", found 0.. Expected: 2 Actual: 0 test/integration/site_layout_test.rb:8:in `block in <class:SiteLayoutTest>' 16/16: [=====================================================================================================================================================================================================] 100% Time: 00:00:00, Time: 00:00:00 F Failure: SiteLayoutTest#test_layout_links [/home/ubuntu/workspace/sample_app/test/integration/site_layout_test.rb:8]: Expected exactly 2 elements matching "a[href="/"]", found 0.. Expected: 2 Actual: 0 bin/rails test test/integration/site_layout_test.rb:5 Finished in 0.57945s 16 tests, 29 assertions, 2 failures, 0 errors, 0 skips Finished in 0.629311s, 25.4246 runs/s, 46.0821 assertions/s. 16 runs, 29 assertions, 2 failures, 0 errors, 0 skips
scivola

2018/01/23 14:26

一見では分かりませんでした。別の話に移ったので,改めて質問を立てられては。 その際,コードは ``` で正しく囲ってください。新しい質問を作るときコードの書き方がサンプルで出てきます。
kinu221

2018/01/24 02:37

承知致しました。その様に致します。ここまで丁寧に御回答いただきありがとうございます。
guest

0

気になった点をいくつか挙げます。

  1. home.html.erb に書かれている、signup_path が、

routes.rb に定義されていないように見えます。

2. home.html.erb に書かれている、rails.png は、存在しているでしょうか。

3. test/fixtures の中に、xxxx.yml があれば、何か記載されていないでしょうか。
testを実行する際、xxx.ymlのデータを読み込んで、データ登録をしてからtestが行われるようなので、xxx.ymlのテストデータ定義に誤りがあると、エラーになることがあります。

一度、確認してみては如何でしょうか。

投稿2018/01/21 13:44

Shara

総合スコア125

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

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

kinu221

2018/01/22 08:33

御回答ありがとうございます。 セルフチェックを行いましたが問題ないように思います。 1についてget '/signup', to: 'users#new'が該当すると思います。 2についてapp/assets/imagesに格納してあります。 3についてusers.ymlには何も記載していません。(参考にしている資料にコードを削除するようにあったので。)
kinu221

2018/01/22 08:39

申し訳ないです。 1についてコードが抜けていました。追記しました。 エラーは似たような記載でした。 undefined method `test_email_addresses_should_be_unique' for class `Minitest::Result' (NameError) user_test.rbに記載しているテストコードによってエラーが発生していると思うのでソースコードを追記致しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問