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

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

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

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Q&A

解決済

1回答

7175閲覧

rspec エラーについて

sanami

総合スコア11

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

0グッド

0クリップ

投稿2015/03/15 07:19

ruby のrspecで下記のエラーが出て困っています。

C:\tmp\spec>rspec sample_1_spec.rb
C:/Ruby21/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in re quire': cannot load such file -- spec_helper (LoadError) from C:/Ruby21/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require .rb:54:in require'
from C:/Ruby21/lib/ruby/gems/2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/
configuration.rb:1181:in block in requires=' from C:/Ruby21/lib/ruby/gems/2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/ configuration.rb:1181:in each'
from C:/Ruby21/lib/ruby/gems/2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/
configuration.rb:1181:in requires=' from C:/Ruby21/lib/ruby/gems/2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/ configuration_options.rb:110:in block in process_options_into'
from C:/Ruby21/lib/ruby/gems/2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/
configuration_options.rb:109:in each' from C:/Ruby21/lib/ruby/gems/2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/ configuration_options.rb:109:in process_options_into'
from C:/Ruby21/lib/ruby/gems/2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/
configuration_options.rb:22:in configure' from C:/Ruby21/lib/ruby/gems/2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/ runner.rb:96:in setup'
from C:/Ruby21/lib/ruby/gems/2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/
runner.rb:85:in run' from C:/Ruby21/lib/ruby/gems/2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/ runner.rb:70:in run'
from C:/Ruby21/lib/ruby/gems/2.1.0/gems/rspec-core-3.2.1/lib/rspec/core/
runner.rb:38:in invoke' from C:/Ruby21/lib/ruby/gems/2.1.0/gems/rspec-core-3.2.1/exe/rspec:4:in <top (required)>'
from C:/Ruby21/bin/rspec:23:in load' from C:/Ruby21/bin/rspec:23:in <main>'

何が原因かお分かりになりますか?
よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーの一行目
cannot load such file -- spec_helper (LoadError)
を解決することが必要と思います。

google で rspec "cannot load such file -- spec_helper" を検索した結果から紹介します。

この中では、

"rails generate rspec:install" を実行しろ、
require_relative '../spec_helper' のように spec_helpre の require を指定しろ、
spec_helpre.rb は /spec フォルダにおけ、

などと書かれています。

この中でも

以下のコマンドを実行してみる。 rails generate rspec:install

と書かれています。

投稿2015/03/15 09:04

katoy

総合スコア22324

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

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

sanami

2015/03/15 13:29

いつもご回答ありがとうございます。 rspecのインストールは、gem install specで済ませており、 gem listコマンドで下記のように確認ができています。 C:\tmp\spec>gem list *** LOCAL GEMS *** bigdecimal (1.2.4) bundler (1.8.4) diff-lcs (1.2.5) io-console (0.4.2) json (1.8.1) minitest (5.5.1, 4.7.5) psych (2.0.5) rake (10.4.2, 10.1.0) rdoc (4.1.0) rspec (3.2.0) rspec-core (3.2.1) rspec-expectations (3.2.0) rspec-mocks (3.2.1) rspec-support (3.2.2) rubygems-update (2.4.6) test-unit (2.1.5.0) thread_safe (0.3.4) tzinfo (1.2.2) コマンドとしてはrailsを使う、rails generate rspec:installでないといけないのでしょうか? また、 >>require_relative '../spec_helper' のように spec_helpre の require を指定しろ とのことですが、 この下記のような表記ということでよろしいでしょうか? require 'spec_helper' describe '../sample_1' do it "引数が数字の場合" do expect(ARGV(['i'])).to eq(i*10) end it "それ以外の場合" do expect eq 'error' end end もう1つ >> spec_helpre.rb は /spec フォルダにおけ とのことですが C:\Ruby21\lib\ruby\gems\2.1.0\gems\rspec-3.2.0の フォルダに置くという解釈であっています? 長文で申し訳ないのですがよろしくお願い致します。 よろしくお願い致します
katoy

2015/03/15 14:16

> rails generate rspec:install これは 1 度実行すれば良いものです。 rspec コマンドが動作するための設定をしてくれるものです。 rspec テストを実行する時は rspec とか reke spec を実行します。 spec_helpre.rb は Rails アプリの spec/フォルダ以下におきます。 *_spec.rb 中での spec_helpre を require する方法は、いろいろ調節してきてください。 参考: [https://github.com/katoy/sample_app_rails4](https://github.com/katoy/sample_app_rails4) は rspec が pass している rails アプリの例です。 (Rails チュートリアルの内容を私が勉強した時に作成したコードです。 READ.ME に書いている build/success のボタンをクリックすると spec の実行結果を参照できます。) spec/spec_helpr.rb として spec_helpre.rb を置いています。 spec/controllers/relations_controller_spec.rb 中では require 'spec_helper' としてます。
sanami

2015/03/15 16:31

ご丁寧にありがとうございます。 私のspec_helpre.rbファイルのディレクトリ箇所が間違えていた為に、 テストエラーとなっていたようで先ほどテスト実行可能となりました。 下記が結果となります。 Failures: 1) ../sample_1 引数が数字の場合 Failure/Error: expect(ARGV(['i'])).to eq(i*10) NoMethodError: undefined method `ARGV' for #<RSpec::ExampleGroups::Sample1:0x24da898> # ./sample_1_spec.rb:4:in `block (2 levels) in <top (required)>' Finished in 0.00701 seconds (files took 0.49873 seconds to load) 2 examples, 1 failure Failed examples: rspec ./sample_1_spec.rb:3 # ../sample_1 引数が数字の場合 テスト実行可能となりましたが、まだエラーが出ている状況なので、 もしよろしければまた教えていただければと思います。 また、先ほど記述していただいたRailsですが、私のrspecの環境下ではRailsなしで行っています。 よろしくお願い致します。
katoy

2015/03/15 22:07

Rails のチュートリアルをして rspec テストが失敗している方の質問だと思っていました。 そうではなかったですね。 それなら、 rails generate rspec:install の実行は不要です。 エラーの内容では ARGV についてテストをしているようですが、ARGV を使ってテストを書くというのは普通ではありません。rspec でのテストの書き方を web なので確認してみてください。
sanami

2015/03/17 00:29

申し訳ありません。 言葉足らずで御迷惑おかけしました。 ARGVはrspec のテストでは書けないということなのですが 引数として設定して扱うにはどのようにしたらよろしいでしょうか? (例: 1、通常のRubyのテストの用に、 引数で数字が入力されたらその値に10を乗算 2、それ以外の引数(文字や引数なし)が入力された場合、error と返す) といったものをrspec のテストとして書き換える事は可能ですか!? 自信で調べて変数などでname などを使いたい場合、 別のrbファイルにclass を用いていたようですが イマイチ分かりませんでした。 よろしくお願い致します。
katoy

2015/03/17 14:55

https://teratail.com/questions/7302 で書いたようにしてみてください。 ます、プログラム側を 直接 ARGV を処理するのではなく ARGV を引数にもつメソッドを作ってその中に処理を書きます。 rspec でのテストは 上で作ったメソッドに対して行います。
sanami

2015/03/22 13:01

いつもお世話になっております。 教えていただいたURLを参考にして 先ほど、下記の内容の sample_3.rbに対し def argv(argv) if argv.count == 0 'nothing' elsif argv[0] =~ /\A\d+\z/ argv[0].to_i * 10 else "#{argv[0]}b" end end if __FILE__ == $PROGRAM_NAME puts argv ARGV end 下記の内容の sample_3_spec.rbを実行しました。 require '../spec_helper.rb' require './sample_3.rb' describe 'argv' do it "引数が無い場合" do expect(argv([])).to eq('nothing') end it "引数が1つの数字" do expect(argv(['1'])).to eq(1 * 10) end it "引数が1つの文字" do expect(argv(["a"])).to eq('ab') end end 結果 Finished in 0.00701 seconds (files took 0.53579 seconds to load) 3 examples, 0 failures となり無事成功いたしました。 ただ、また別のファイルでエラーとなっているので新たに質問を設けるので答えていただければと思います。 ご丁寧にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問