2016-08-13 78 views
1

当我运行rspec的例子会通过,一切都很好。 但是,当期望不匹配时,我得到了一个奇怪的TypeError,而不是有用的消息,关于预期值和实际值之间的差异。为什么在期望不匹配时RSpec会因TypeError失败?

鉴于

  • 红宝石2.3.1p112
  • rspec的3.5.2
  • 一个规范的帮手,就像通过rspec —init

产生0

然后一切都很好

Finished in 0.00286 seconds (files took 0.09671 seconds to load) 
1 example, 0 failures 

当我改变X为false,从而匹配失败

describe "Basics" do 
    it "runs rspec successfully" do 
    x = false 
    expect(x).to be(true) 
    end 
end 

然后

Failures: 

    1) Basics runs rspec successfully 
    Failure/Error: expect(x).to be(true) 

    TypeError: <——— 
     superclass must be a Class (Module given) 
    # ./spec/lib/basic_spec.rb:4:in `block (2 levels) in <top (required)>' 

Finished in 0.06168 seconds (files took 0.09715 seconds to load) 
1 example, 1 failure 

我希望像

lhs: false 
    rhs: true 

,而不是这种类型错误的输出。

这里有什么问题?

+0

我认为你只能使用'expect(x).to'或'expect(x).not_to be'在所有其他情况下,你使用的操作符就像'expect(x).to <3' I认为。 – slowjack2k

+0

也有这些构造,用于测试真/假而不是真/假:'expect(x).to be_truthy'; 'expect(x).to be_falsey' –

回答

0

这样做的原因是我的宝石以下行文件

gem "prettyprint" 

我从Gemfile中删除它,一切都按预期工作。 正如我所想,可以使用pp some_object而不使用任何宝石。

相关问题