Ответ 1
В соответствии с этот поток be_true
и be_false
теперь известны как be_truthy
и be_falsy
.
Основное различие между be true
и be_truthy
или be false
и be_falsy
заключается в том, что совпадение be_falsy
/be_truthy
проходит, если "ожидаемый результат" (т.е. любой объект) равен (для be_falsy
)/ не (для be_truthy
) nil
или false
, а с другой стороны be true
и be false
используйте ==
для проверки ваш "ожидаемый результат" (логический объект) должен быть равен true
/false
.
Что означает истинность ожиданий rspec:
expect(actual).to be_truthy # passes if actual is truthy (not nil or false)
expect(actual).to be true # passes if actual == true
expect(actual).to be_falsy # passes if actual is falsy (nil or false)
expect(actual).to be false # passes if actual == false
expect(actual).to be_nil # passes if actual is nil
expect(actual).to_not be_nil # passes if actual is not nil
Примеры -
Для be true
и be false
:
it { expect(true).to be true } # passes
it { expect("string").to be true } # fails
it { expect(nil).to be true } # fails
it { expect(false).to be true } # fails
it { expect(false).to be false } # passes
it { expect("string").to be false} # fails
it { expect(nil).to be false} # fails
it { expect(true).to be false} # fails
Для be_truthy
и be_falsy
:
it { expect(true).to be_truthy } # passes
it { expect("string").to be_truthy } # passes
it { expect(nil).to be_truthy } # fails
it { expect(false).to be_truthy } # fails
it { expect(false).to be_falsy } # passes
it { expect(nil).to be_falsy } # passes
it { expect("string").to be_falsy} # fails
it { expect(true).to be_falsy } # fails
Вы можете использовать любой другой объект как "ожидаемый результат" в месте "string"
, за исключением nil
/true
/false
, потому что они уже присутствуют в примерах, показанных выше.