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

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

ただいまの
回答率

90.48%

  • RSpec

    185questions

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

rspec エラーについて

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 4,228

sanami

score 14

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>'

何が原因かお分かりになりますか?
よろしくお願い致します。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

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

google で rspec "cannot load such file -- spec_helper" を検索した結果から紹介します。
- in 'require': no such file to load — spec_helper http://stackoverflow.com/questions/5150293/
この中では、 
 "rails generate rspec:install" を実行しろ、
 require_relative '../spec_helper' のように spec_helpre の require を指定しろ、
 spec_helpre.rb は /spec フォルダにおけ、
などと書かれています。

- トラブルシューティング http://www.srcw.net/wiki/index.php?RSpec#t6653edb
この中でも 
  以下のコマンドを実行してみる。  rails generate rspec:install
と書かれています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/03/15 22: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の
    フォルダに置くという解釈であっています?

    長文で申し訳ないのですがよろしくお願い致します。

    よろしくお願い致します

    キャンセル

  • 2015/03/15 23: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' としてます。

    キャンセル

  • 2015/03/16 01: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なしで行っています。

    よろしくお願い致します。

    キャンセル

  • 2015/03/16 07:07

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

    キャンセル

  • 2015/03/17 09:29

    申し訳ありません。
    言葉足らずで御迷惑おかけしました。

    ARGVはrspec のテストでは書けないということなのですが
    引数として設定して扱うにはどのようにしたらよろしいでしょうか?
    (例:
    1、通常のRubyのテストの用に、
    引数で数字が入力されたらその値に10を乗算
    2、それ以外の引数(文字や引数なし)が入力された場合、error と返す)

    といったものをrspec のテストとして書き換える事は可能ですか!?

    自信で調べて変数などでname などを使いたい場合、
    別のrbファイルにclass を用いていたようですが
    イマイチ分かりませんでした。

    よろしくお願い致します。

    キャンセル

  • 2015/03/17 23:55

    https://teratail.com/questions/7302
    で書いたようにしてみてください。

    ます、プログラム側を 直接 ARGV を処理するのではなく ARGV を引数にもつメソッドを作ってその中に処理を書きます。
    rspec でのテストは 上で作ったメソッドに対して行います。

    キャンセル

  • 2015/03/22 22: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
    となり無事成功いたしました。
    ただ、また別のファイルでエラーとなっているので新たに質問を設けるので答えていただければと思います。

    ご丁寧にありがとうございます。

    キャンセル

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

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    RSpecでのARGVの扱い

    Rubyでedエディタのようなもの(実行時にファイルを引数に取り標準入力でコマンドを受け取り標準出力で結果を返す)を作っているのですが、RSpecでそのコードをテストしようと思った

  • 受付中

    Railsチュートリアルの第3章のRSpecの設定時にエラーが発生してしまう。

    現在Railsチュートリアル(http://railstutorial.jp/)を使って学習をしているんですが、第3章のテストを実行しようとした際にエラーになってしまって困っていま

  • 解決済

    ruby rspecのテストケースの書き方

    rspeの初心者です。 いままで扱っていたrubyのプログラムをrspec形式に書き直したいのですが、 どのように書けばいいかいまいち解らなので教えていただければと思います。 i

  • 解決済

    Ruby rspec 引数についてのエラー

    コマンドプロンプトからrspecファイルを実行時に以下のエラーが出ていて困っています。 10 F. Failures:   1) argv 引数が数字の場合      Fai

  • 解決済

    rspec 変数について

    以下のようなspec.rbに対して、どのようなrbファイルを作成すればエラーなしでコンパイル可能でしょうか? dog_spec.rb ↓↓ require 'spec_help

  • 解決済

    rspec実行時のrbファイルの構成

    下記のrspecファイルをエラーなしで実行するには、 どのようなrbファイルを作成すればよろしいでしょうか? #---start--- require 'spec_helper'

  • 解決済

    rspecが実行できません

    rspecを実行しようとするとエラーが発生していしまいます。 以下にPCの環境と実施した際のコマンド、エラーログを載せておきます。 もしどなたかわかる方がいたら解決策を教えて下さい

  • 解決済

    [Ruby on Rails]bundle install でのエラー解決方法

    bundle install でエラー Railsチュートリアルを行っている最中なのですが、 下記エラーが発生し困っております。 解決方法をググって色々探し、試してみたの

同じタグがついた質問を見る

  • RSpec

    185questions

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