RSpec应该是be_true vs should == true

时间:2014-01-23 23:39:41

标签: ruby rspec

之间是否存在任何差异:

something.should == true

something.should be_true

3 个答案:

答案 0 :(得分:3)

惯例是:expect(something).to be_true但是如果使用得当没有区别。期望== true的某些内容只应针对表达式进行评估。

  • 查看文档:{​​{3}}

Rspec测试:

describe "is the equation true? " do
  let!(:add) { 5+5 == 10 }

  it "be_true" do
    add.should be_true #passes
  end

  it "expect be_true" do
    expect(add).to be_true #passes
  end

  it "== true" do
    add.should == true #passes
  end
end


字符串更新:

字符串不是== true因此它会失败,但会以be_true传递,因为falsenil以外的任何内容都被视为truthy但是,这不是您检查string

的方式


查看此示例,了解如何正确检查string中的值:

str = "happy dance!"

要查找文字是否在string中,您可以使用:expect(str).to include("happy dance!")

答案 1 :(得分:0)

提供给这个问题的答案是错误的,如下所示,第一个测试是对平等的测试,而第二个测试是对真实性的测试,第一个测试将失败,因为something != true而后者将通过因为任何事情红宝石中的nilfalse的订单是truthy

require 'rspec'

describe "do something" do

  let(:something) { "hey" }
  it { something.should == true }
  it { something.should be_true }
end

答案 2 :(得分:-1)

不,没有区别。

后者是前者的语法糖。