2016-08-13 2 views
1

Когда я запустил rspec с примером, который пройдет, все в порядке. Но когда ожидания не совпадают, я получил странный TypeError вместо полезного сообщения о разнице между ожидаемым и фактическим значением.Почему RSpec не работает с TypeError, когда ожидание не соответствует?

Учитывая

  • рубин 2.3.1p112
  • RSpec 3.5.2
  • спецификацию хелперов так же, как порожден rspec —init

Когда

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

Тогда все нормально

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

НО при изменении х на ложь, таким образом, совпадение не

Когда

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 

вместо этого TypeError.

Что здесь не так?

+0

Я думаю, что вы можете использовать 'expect (x) .to be' или' expect (x) .not_to be' Во всех остальных случаях вы используете операторов с похожими на 'expect (x) .to be <3' I думать. – slowjack2k

+0

Существуют также эти конструкции для проверки правды/ложности, а не истины/false: 'ожидать (x) .to be_truthy'; 'ожидать (x) .to be_falsey' –

ответ

0

причина этого была следующая строкой в ​​моем самоцвете файл

gem "prettyprint" 

Я удалил его из Gemfile и все работает, как ожидалось. Как я понял, можно использовать pp some_object без использования каких-либо драгоценных камней.

Смежные вопросы