ruby - 为什么 FakeFS 会破坏 RSpec?

标签 ruby rspec

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 返回第一个测试的类 File 的父类(super class)不匹配,以及正常的expected: 2 got: 1第二种情况。匹配器更改(例如 be_kind_of(String))不会影响结果。为什么会发生这种情况?如何解决?

ruby -v

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

最佳答案

我刚刚遇到了这个问题,接受的答案对我没有帮助。

但我最终通过将以下行添加到我的 spec_helper.rb 的顶部解决了这个问题:

require 'pp'

我有一个.rspec文件包含以下行以确保始终加载spec_helper:

--require spec_helper

FakeFS 自述文件中有记录,您需要要求 pp之前fakefs为了避免这个问题,但我没有要求 pp我。我使用的其他一些 gem 一定隐式地需要它*。

因此,通过明确要求 pp之前fakefs ,我的规范现在可以正常运行。

* 我怀疑 RSpec 使用 pp对于 pretty-print 错误消息,因为我可能会导致 expect(true).to eq false 行中出现异常

关于ruby - 为什么 FakeFS 会破坏 RSpec?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37280343/

相关文章:

ruby - 如何声明在 RSpec 中的示例之间共享的变量?

ruby-on-rails - Rspec Controller 基础测试

ruby-on-rails - 单一资源上 rspec 测试帖子的不匹配路由

ruby-on-rails - 语法错误 : (irb):26: both block arg and actual block given

ruby - 为什么我们在 Ruby 中有隐式接收者?

ruby-on-rails - 覆盖Activerecord保存方法好吗?

ruby-on-rails - Rspec Controller 错误,要求<"index">,但使用<""进行渲染>

ruby-on-rails - 在哪里放置可重用的方法以供 rails 中的 Controller 访问

ruby - 将散列插入特定的数组位置

ruby - Sinatra 发布请求时出现无效的 URI 错误