Когда я запустил 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.
Что здесь не так?
Я думаю, что вы можете использовать 'expect (x) .to be' или' expect (x) .not_to be' Во всех остальных случаях вы используете операторов с похожими на 'expect (x) .to be <3' I думать. – slowjack2k
Существуют также эти конструкции для проверки правды/ложности, а не истины/false: 'ожидать (x) .to be_truthy'; 'ожидать (x) .to be_falsey' –