Ruby RSpec应该为真vs应该==真
以下两者之间有什么区别吗Ruby RSpec应该为真vs应该==真,ruby,rspec,Ruby,Rspec,以下两者之间有什么区别吗 something.should == true 及 这个惯例是:期望(某物)。是真的但是正确使用时没有区别。仅应根据表达式计算期望值为==true 见文件: 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" d
something.should == true
及
这个惯例是:
期望(某物)。是真的
但是正确使用时没有区别。仅应根据表达式计算期望值为==true
- 见文件:
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
字符串更新:
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\u true
传递,因为除了false
或nil
之外的任何内容都被视为truthy
但是,这不是检查字符串的方式
有关如何正确检查
字符串中的值的信息,请参见此示例
:
str = "happy dance!"
要查找文本是否在字符串中,可以使用:expect(str)。要包含(“快乐舞蹈!”)
否,没有区别
后者是前者的语法甜点。这个问题的答案是错误的,如下所述,第一个测试是平等性测试,而第二个测试是真实性测试,第一个测试会失败,因为有些东西!=true
而后面的将通过,因为在ruby中,除nil
或false
以外的任何顺序都是truthy
require 'rspec'
describe "do something" do
let(:something) { "hey" }
it { something.should == true }
it { something.should be_true }
end
仅限子孙后代:expect(某物)。事实上,被认为是编写规范的更新、更好的方式。expect
语法完成了相同的任务,但并不依赖于猴子修补所有对象以获得should
方法,这在极少数情况下会导致问题。尽管rspec仍然支持这两种方法。答案是不正确的,正如我在回答中所说的那样,存在差异below@feed_me_code我给出了一个例子,其中something.should==true和something.should\u true不一样,为了更清楚地说明这一点,我们将be_-truthy
和be_-falsy
添加到最新版本的rspec@feed_me_code请不要投票表决我的答案,因为这是一个明确的背景,可以显示差异,而且不需要向下证明,看一篇关于同一主题的博客文章:这取决于使用的上下文,检查我的答案below@feed_me_code没有理由争论,我只是想澄清和贡献知识,而不是参与争论。谢谢被否决的选民不应该害羞地解释他为什么否决这是根本错误的,正如我在对被接受答案的评论中所指出的那样。