2016-05-17 149 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返回superclass mismatch for class File用於第一測試和正常expected: 2 got: 1在第二種情況下。匹配更改(例如be_kind_of(String))不會影響結果。爲什麼會發生這種情況?如何解決?

紅寶石-v

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

見:https://github.com/fakefs/fakefs/issues/215 – lifetimes

回答

1

我只是有這個問題,而接受的答案並沒有幫助我。

但我最終加入下面的一行到我spec_helper.rb頂部解決此問題:

require 'pp' 

我有一個.rspec文件與以下行,以確保spec_helper總是加載:

--require spec_helper 

在FakeFS自述文件中記錄,您需要在fakefs之前需要pp以避免此問題,但我自己並不需要pp。它一定是我用*所暗示的其他寶石。

因此,通過在fakefs之前明確要求pp,我的規格現在按照他們的要求運行。

*我懷疑RSpec的使用pp的漂亮打印錯誤消息,因爲我可能導致線路異常expect(true).to eq false

0

感謝@ d.g爲link到fakefs問題。事情的工作:

的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 
相關問題