🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

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

Ruby on Rails

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

ユニットテスト

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

Q&A

解決済

3回答

3164閲覧

`require': cannot load such file -- test_helper (LoadError)が出てテストが失敗してしまいます。

helo

総合スコア36

Ruby

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

Ruby on Rails

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

ユニットテスト

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

1グッド

1クリップ

投稿2019/11/23 04:49

編集2019/11/23 06:02

前提・実現したいこと

rails tutorial第3章のTestのところで、Rails testのコマンドを打つとエラーが出て失敗してしまいます。諸々Webページを調べましたが、何とも原因が分からず困っております。詳しい方いらっしゃいましたら、アドバイス頂けますと大変有難いです。
よろしくお願いします。

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

$ rails test C:/Users/○○○○/OneDrive/デスクトップ/ruby_lesson/helo_app/test/controllers/static_pages_controller_test.rb:1:in `require': cannot load such file -- test_helper (LoadError) from C:/Users/○○○○/OneDrive/デスクトップ/ruby_lesson/helo_app/test/controllers/static_pages_controller_test.rb:1:in `<top (required)>' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/railties-5.1.6/lib/rails/test_unit/runner.rb:50:in `require' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/railties-5.1.6/lib/rails/test_unit/runner.rb:50:in `block in load_tests' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/railties-5.1.6/lib/rails/test_unit/runner.rb:50:in `each' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/railties-5.1.6/lib/rails/test_unit/runner.rb:50:in `load_tests' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/railties-5.1.6/lib/rails/test_unit/runner.rb:39:in `run' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/railties-5.1.6/lib/rails/commands/test/test_command.rb:38:in `perform' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/thor-0.20.3/lib/thor/command.rb:27:in `run' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/railties-5.1.6/lib/rails/command/base.rb:63:in `perform' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/railties-5.1.6/lib/rails/command.rb:44:in `invoke' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/railties-5.1.6/lib/rails/commands.rb:16:in `<top (required)>' from bin/rails:4:in `require' from bin/rails:4:in `<main>'

該当のソースコード

ソースコード

試したこと

「そのようなファイルをロードできません-test_helper」とエラーが出てしまいます。
チュートリアルに沿ってやっているので、それ以上のことは知識がなく、他のサイト等も探してみましたがpathが違ったなどの
内容で何とも分からず手立てが出来ていないです。よろしくお願いします。

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

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

退会済みユーザー👍を押しています

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

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

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

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

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

2KOH

2019/11/23 05:38

まず、 cannot load such file -- test_helper を日本語訳できますか? 訳せないなら「訳せません」と追記してください。 訳せるなら、なぜそのようなエラーが出るか、心当たりを探して思いつく解決策を試し、「試したこと」に追記してください。
2KOH

2019/11/23 06:08

test_helper.rb というファイルはありますか? ないなら、チュートリアルでこのファイルを作るステップを飛ばしている可能性があります。 存在しているならば、require で読み込む際のパスが合っているかを確認してください。
helo

2019/11/23 06:25

2KOH様 アドバイスありがとうございます。 test_helper.rbはありまして、この中には以下の内容になっております。 ENV['RAILS_ENV'] ||= 'test' require File.expand_path('../../config/environment', __FILE__) require 'rails/test_help' class ActiveSupport::TestCase    ・    ・ この二つのreqiireのパスがなにか関係するのでしょうか? まだまだ初学者でして、申し訳ないですが余り理解が出来ておりません。
otn

2019/11/23 06:56

ls して、test_helper.rb が表示されますか?
helo

2019/11/23 07:11

otn様 コメントありがとうございます。 ls しますと、 $ ls static_pages_controller_test.rb となります。 cdしてディレクトリ/test/controllersにて行いました。 test_helper.rbは、systemディレクトリ直下にあるのですが、 systemディレクトリへcdしてlsしますと、yesy_helper.rbが パスに出てこないです。
otn

2019/11/23 07:12

?? rails s したディレクトリで ls しないと意味ないです。 そこに test_helper.rb がないのでは?なので、エラーです。
helo

2019/11/23 07:22

rails sを行ったディレクトリでlsしますと、以下のようなファイル群になります。 $ ls app/ config/ db/ Gemfile.lock log/ public/ README.md tmp/ bin/ config.ru Gemfile lib/ package.json Rakefile test/ vendor/ 確かにここには、test_helper.rbは存在していません。 どうしてこんなことが起こっているのでしょうか・・・。
otn

2019/11/23 07:28

> どうしてこんなことが起こっているのでしょうか・・・。 そこにそのファイルを置いていないからでは? もしくは、間違ったディレクトリで、rails s コマンドを入れてしまった。正しいディレクトリでやりましょう。
helo

2019/11/23 07:38

同じディレクトリで、rails serverはやっていますので、そのファイルが違う所に配置されたという事なんでしょうか。。。 チュートリアルの指示通りやっていたのですが・・。 これは、rails newからやり直すほうが良いのでしょうか?
otn

2019/11/23 07:40

> チュートリアルの指示通りやっていたのですが・・。 指示通りやってないから、エラーが出ています。
helo

2019/11/23 07:47

確かにそういうことになりますよね。 ちょっと途中まで戻って、やり直してみます。 アドバイスありがとうございました。
guest

回答3

0

自己解決

無事、自己解決できましたので投稿します。

require_relative '../test_helper'

rerativeを使って絶対パスで実行したら、テストは成功しました。
良かったです。
いろいろアドバイス頂きました皆様、ありがとうございました。
非常に良い勉強になりました。今後も精進して参ります。

投稿2019/11/25 13:57

helo

総合スコア36

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

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

Nora-neko

2019/11/28 02:46

全く同じ個所・同じ用法で悩んでいまして、 この解決法と色々不具合のgemいじったら解決しました。 明記してくれてありがとうございました。
helo

2019/11/30 01:16

Nora-neko様 それは、お役に立てて良かったです。 チュートリアル頑張りましょう!
guest

0

test/ があって spec/ がないので rspec ではなく mini test でのtestだろうということですすめます。
rails でのtestのhelperは test/ 直下に書いたり、多くなってきた時には test/helpers に書いたりします。
が、
test_helper.rbは多分 test 直下に(rails newによって)作られているのではないでしょうか
そこだと特に何かを行わなくても取り込まれるとおもうのですが。

rails test はどのdirectoryに cd して行いましたか?
rails new をしてできたdirecotryで行わないといろいろ不都合が出るかも

「test_helper.rbは、systemディレクトリ直下にある」というのが???です
system_directory とはどこにあるものでしょう?

投稿2019/11/23 10:47

winterboum

総合スコア23567

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

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

helo

2019/11/23 11:00

winterboum様 アドバイスありがとうございます。また、rails newからやり直してのですがやはりtestで躓いております。ディレクトリはraiils newで作成したものでcdしています。 test_helper.rbは、~作業ディレクトリ/test/system/test_helper.rbという パスで、systemディレクトリの下にあるのですがこれがおかしいのでしょうか・・・。
winterboum

2019/11/23 11:06

rails は 6ですか? まだ6には手を出していないのでわかりませんが、5では test/systemはありますが、test_helperはtest にあります。
helo

2019/11/23 11:11

rails 5.1.6です。チュートリアルでバージョン指定があったのでそれでやっります。でも、sysytem/test_helper.rbなのですが・・・。
winterboum

2019/11/23 11:16

はて、、、、 試しに mv test/system/test_helper.rb test してからやってみて下さい。
helo

2019/11/23 11:24

やってみたのですが、ファイルがないというメッセージが出てしまいます。 ~@DESKTOP-NGDL1L7 MINGW64 ~/OneDrive/デスクトップ/ruby_lesson/sap_app (static-pages) $ mv test/system/test_helper.rb test mv: cannot stat 'test/system/test_helper.rb': No such file or directory 作業ディレクトリからコマンドしたのですが・・。
winterboum

2019/11/23 11:32

>でも、sysytem/test_helper.rbなのですが・・・。 とは test/system/test_helper.rb  ではないのですか?
helo

2019/11/23 11:43

そうです。 そのことです。 ここへパスをcdしていってもエラーが出てしまいます。 どうなっているのか訳が分からないです。
winterboum

2019/11/23 11:48

railsで仕事をするときは、通常は rails root(rails new をしてできたdirecotry)にcdしてそこで作業します。 rails test もそうです。先ほど私がお願いした mv 某もそのつもりで書きましたが、どこで行いましたか?
helo

2019/11/23 11:55

rails new で作成した作業ディレクトリでやっています。 先ほど頂いたコマンドもそこで行いました。
winterboum

2019/11/23 12:00

はて > でも、sysytem/test_helper.rbなのですが・・・。 とは test/system/test_helper.rb  ではないのですか? に >そうです。 との事なのに、 mv: cannot stat 'test/system/test_helper.rb': No such file or directory ですか? ls ls test ls test/system の結果を見せて下さい。
helo

2019/11/23 12:06

すいません。ややこしくなってしまって。作業ディレクトリにて行います。 $ ls app/ config/ db/ Gemfile.lock log/ public/ README.md tmp/  bin/ config.ru Gemfile lib/ package.json Rakefile test/ vendor/ $ ls test application_system_test_case.rb fixtures/ integration/ models/ test_helper.rb  controllers/ helpers/ mailers/ system/ $ ls test/system  こちらは、リストが出てきませんでした。
winterboum

2019/11/23 12:08

無事 testに移っているようですね。 この状態で rails test するとどうなりますか?
helo

2019/11/23 12:11

やはりLoadErrorになってしまいました。
winterboum

2019/11/23 12:13

test/controllers/static_pages_controller_test.rb の頭の数行を見せて下さい
helo

2019/11/23 12:16

C:/Users/tae-t/OneDrive/デスクトップ/ruby_lesson/sap_app/test/controllers/static_pages_controller_test.rb:1:in `require': cannot load such file -- test_helper (LoadError) from C:/Users/tae-t/OneDrive/デスクトップ/ruby_lesson/sap_app/test/controllers/static_pages_controller_test.rb:1:in `<top (required)>' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/railties-5.1.6/lib/rails/test_unit/runner.rb:50:in `require' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/railties-5.1.6/lib/rails/test_unit/runner.rb:50:in `block in load_tests' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/railties-5.1.6/lib/rails/test_unit/runner.rb:50:in `each' from C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/railties-5.1.6/lib/rails/test_unit/runner.rb:50:in `load_tests'
helo

2019/11/23 12:31

こちらで大丈夫でしょうか?
winterboum

2019/11/23 12:44

test/controllers/static_pages_controller_test.rb の頭です
helo

2019/11/23 12:46

rails testの結果の冒頭という事で良いでしょうか?
helo

2019/11/23 12:50

それが先ほどお送りしましたものなのですが・・。これでは無いですか?
winterboum

2019/11/23 20:57

test の結果ではなく、そのテストのエラーを起こしている test/controllers/static_pages_controller_test.rb の頭のところを確認しておきたいのです
helo

2019/11/24 02:40

winterboum様 そのパスの頭のところというのは、以下のCドライブからのパスのことでしょうか? C:/Users/tae-t/OneDrive/デスクトップ/ruby_lesson/sap_app/test/・・ 違うようでしたら申し訳ないです。 それともrailsディレクトリのコードでしょうか? であれば、以下になります。よろしくお願いします。 require 'test_helper' class StaticPagesControllerTest < ActionDispatch::IntegrationTest test "should get home" do get static_pages_home_url assert_response :success end test "should get help" do get static_pages_help_url
winterboum

2019/11/24 11:34

特におかしな所は無いですね。 はて、、、、 minitest系ではこのところ使っていないということも有るのですが、私には悪い所が見当たりません。申し訳ないです。 最近rails5で実装して、rspecでテストを組んだのがあります。つまり mini test系は手を入れていない。そこで rails test してみましたら、test_helper.rbを読みました。 test/test_helper.rbは特に宣言などしなくても取り込めるようになっていると思っていたのは合っている様です。
helo

2019/11/24 12:22

確認いただきまして、ありがとうございます。 違うテストだとtest_helper.rbがちゃんと読み込まれたんですか・・。 確かに練習で簡単なテストを書いて、minitest/autorunを書いたら読み込んだりしたので、まさかrailsディレクトリでこんなトラブルが起こるとは 思いもよりませんでした。また、一からrails newをしてやり直してみます。 winterboum様には、休日にもかかわらずアドバイスやチェックを頂きまして大変感謝いたします。心より御礼申し上げます。ありがとうございました!
guest

0

このエラーの原因は、static_pages_controller_test.rb の1行目で test_helper.rb を読み込もうとしたが、そのファイルを見つけられなくて読み込めなかったためです。

このエラーを回避したいだけであれば、static_pages_controller_test.rb の1行目を

ruby

1require "C:/省略/test_helper.rb"

のように絶対パスに書き換えればいいと思います。
ですが、これは対症療法です。
普通は $LOAD_PATH が設定されているためそんなことをする必要はないはずですし、根本的に解決しておかないと別の問題が発生する可能性もあるので、おすすめはしません。

チュートリアルのどこかの手順を間違えているのが根本的な原因だと思うのですが、自分は Ruby 専門であり Rails は専門外なのでこれ以上はわかりません。
誰か他の人、お願いします。

投稿2019/11/23 07:09

2KOH

総合スコア999

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

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

helo

2019/11/23 07:17

2KOH様 ご丁寧な回答ありがとうございます。チュートリアルでは難しい部分があまりないステータスなのでミスはしていないと思うのですが、何かやってしまっているのでね・・・。すいません。確かにここのみの対処療法は後々 不具合も怖く、また他の方のアドバイスを待つようにいたします。 本当に、ご親切にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問