2016-08-10 5 views
2

ほとんどすべての仕様について、rspecはエラーを報告すると、パスの最後に行番号を通知します。rspecがエラーの行番号を報告しない

rspec ./spec/controllers/eclubs_controller_spec.rb:21 

は、しかし、私の仕様の一つで、それはブロックの入れ子の面で意味を成すことが、この

rspec ./spec/controllers/eclubs/members_controller_spec.rb[1:1:2:3:1] 

のようなエラー位置を報告しますが、率直に言って、むしろ不可解です。

作品スペックの上部には、この

require 'rails_helper' 
describe EclubsController do 

と私は2つのファイルに見ることができる唯一の違いは、この

require 'rails_helper' 
describe Eclubs::MembersController do 

のようなルックスに動作しないもののように見えますその1つのコントローラには名前空間がありますが、エラーラインを正しく報告する他の名前空間コントローラがあります。

この原因は何ですか?

+0

うーん、伝えるのは難しいです。これは、エラーを引き起こしているインクルードされたファイル(例えば、 'rails_helper.rb'や什器ファイルの構文エラーなど)が発生することがあります。必ずしも実際の問題ではありませんが、この原因となるのは –

答えて

3

RSpecは、問題の例を識別するために行番号が十分に一意でない場合、例題IDを使用します。

例が動的に定義されているとき、これは、ループ内などに発生することができます

(0..10).each do |i| 
    it do 
    expect(i).to_not eq(5) 
    end 
end 
# rspec './my_spec.rb[1:6]' 

またはSHARED例・グループを使用して:

RSpec.shared_examples_for "not equal 5" do |i| 
    it do 
    expect(i).to_not eq(5) 
    end 
end 

RSpec.describe do 
    it_behaves_like "not equal 5", 5 
    it_behaves_like "not equal 5", 4 
end 
# rspec './my_spec.rb[2:1:1]' 
+0

です。そのファイルには、共有されたサンプルグループがあります。 – Obromios

+0

okですが、rspecにはそうしないように指示する方法はありますか?特に、実際にあいまいではない場合(たとえば、パラメータ化された共有の例を使用しているが、コンテキストブロックごとに1回だけ呼び出す場合)。私は頭の中の木を解析したくないです、私はちょうどitermの失敗仕様をクリックして、気になるコードを修正したいと思います。 –

関連する問題