2016-05-17 7 views
1

test_spec.rb:(FakeFS exampleから)FakeFSがRSpecを壊すのはなぜですか?

require 'fakefs/spec_helpers' 

describe 'Test' do 
    include FakeFS::SpecHelpers 
    it 'should fail' do 
    expect(1).to eq(2) 
    end 
end 

describe 'Test2' do 
    it 'should fail' do 
    expect(1).to eq(2) 
    end 
end 

RSpecのスペック/ test_spec.rb第二の場合に最初のテストと正常expected: 2 got: 1ため戻るsuperclass mismatch for class File。マッチャーの変更(例:be_kind_of(String))は結果に影響しません。なぜこれが起こり、どのように修正することができますか?

は、ルビーは、この問題をfakefsするlinkためd.g @

ruby 2.4.0dev (2016-03-19 trunk 54188) [x86_64-linux] 
+1

参照で例外を引き起こす可能性があるとして、RSpecのは、かなりの印刷エラーメッセージのppを使用しています疑い*:https://github.com/fakefs/fakefs/issues/215 – lifetimes

答えて

1

私はちょうどこの問題があり、受け入れられた答えは私を助けませんでした。

しかし、私は最終的に私のspec_helper.rbの先頭に次の行を追加することで問題を解決しました:

require 'pp' 

私はspec_helperが常にロードされていることを確認するために次の行で.rspecファイルがあります:

--require spec_helper 

この問題を避けるために、の前にfakefsを必要とすることがFakeFSのreadmeに記載されていますが、私はppを必要としませんでした。私が使っている他の宝石によって暗黙に必要とされているに違いない。

したがって、fakefsの前に明示的にppを必要とすることで、私の仕様は今通りに動作します。

私はラインexpect(true).to eq false

0

感謝を-v。働くもの:

Gemfile

gem 'fakefs', require: 'fakefs/safe' 

スペック/ spec_helper.rb

require 'fakefs/spec_helpers' 

RSpec.configure do |config| 
    config.include FakeFS::SpecHelpers, fakefs: true 
end 

test_spec.rb

require_relative 'spec_helper.rb' 

describe 'Test', fakefs: true do 
    it 'should fail' do 
    expect(1).to be_kind_of(String) 
    end 
end