test_spec.rb:(来自FakeFS example)
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 spec / test_spec.rb 为第一次测试返回superclass mismatch for class File
,在第二种情况下返回正常expected: 2 got: 1
。匹配器更改(例如be_kind_of(String)
)不会影响结果。为什么会发生这种情况,如何解决?
ruby -v
ruby 2.4.0dev (2016-03-19 trunk 54188) [x86_64-linux]
答案 0 :(得分:2)
我刚刚遇到这个问题,接受的答案对我没有帮助。
但我最终通过在spec_helper.rb
的顶部添加以下行来解决问题:
require 'pp'
我有一个.rspec
文件,其中包含以下行,以确保始终加载spec_helper:
--require spec_helper
FakeFS自述文件中记录了您需要在pp
之前fakefs
才能避免此问题,但我自己并不需要pp
。它必须由我使用的其他一些宝石隐含地要求*。
因此,在pp
之前明确要求fakefs
,我的规格现在可以按原样运行。
*我怀疑RSpec使用pp
来处理漂亮的打印错误消息,因为我可以在行expect(true).to eq false
答案 1 :(得分: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