web-dev-qa-db-ja.com

バンドルgem:rspecは「例が見つかりません」と言います

Ruby on Railsプロジェクトをgemに移植している最中です。bundle gemを使用して新しいgemディレクトリを作成しました。libおよびspecディレクトリの場合、gemのプロジェクトレイアウトは次のようになります。

|- lib
|  |- mylib
|  |  |- MYCLASS.rb
|  |  |- version.rb
|  |
|  |- mylib.rb
|
|- spec
   |- spec_helper.rb
   |- mylib
      |- test_MYCLASS.rb

spec/spec_helper.rbの内容:

require "mylib"

RSpec.configure do |config|
end

mylib.gemspecコマンドによって生成された、bundle gemの関連部分:

spec.files         = `git ls-files`.split($/)
spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
spec.require_paths = ["lib"]

bundle exec rspec specを実行すると、

No examples found.


Finished in 0.00004 seconds
0 examples, 0 failures

2つの質問。

  1. このgemのディレクトリレイアウトは「正しい」ですか? (公式のレイアウトがあると仮定して)
  2. テストが実行されないのはなぜですか? bundle exec rspec spec/mylib/*を実行すると、spec/mylib/test_MYCLASS.rbのテストが実行されますが、bundle exec rspec spec/mylib/を実行すると、例が見つからないと表示されます。

私は同様の質問を見てグーグルで検索しましたが、どれも私の問題を解決しません。

23
yanhan

同僚の助けを借りて解決しました。スペックファイルには_specサフィックスを付けて名前を付ける必要があり、bundle exec rspec specが機能することがわかりました。以前、スペックファイルにtest_プレフィックスを付けました。 bundler1.3.5とrspec2.14.1を使用していました

46
yanhan

もう1つの考えられる問題は、require 'Rails_helper'を忘れることです。これは通常、require 'rspec/Rails'を含むほとんどのテストサポートライブラリが必要な場所です。

0
Babbz77