首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rspec expect(方法)与expect(方法).to be_true

Rspec expect(方法)与expect(方法).to be_true
EN

Stack Overflow用户
提问于 2014-03-28 19:01:09
回答 2查看 1.4K关注 0票数 1

我刚刚开始使用RSpec和Rails深入到TDD中,我发现如果我正在测试一个应该是真的的方法,那么如果我使用expect(方法)而不是expect(方法).to be_true,测试就会工作。

代码语言:javascript
复制
it "is true" do
  expect(subject).to be_true
  #Works the same as...
  expect(subject)
end

是否有任何理由不使用expect而不使用.to,它会破坏测试还是不会捕捉到某些故障?只是想知道。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-28 21:33:54

你没有达到你认为的那样。expect(false)不会失败。expect(true)之所以成功,是因为什么都没有被测试。例如,如果您有以下规范:

代码语言:javascript
复制
describe "something" do
  it "does something" do
    false
    puts expect(false)
    # anything that evaluates to false
  end
end

当您运行rspec时,您会得到这样的结果:

代码语言:javascript
复制
#<RSpec::Expectations::ExpectationTarget:0x007ff0b35a28b8\>
.

Finished in 0.00061 seconds
1 example, 0 failures

本质上,您没有断言任何内容,expect(subject)的计算结果为ExpectationTarget。

票数 3
EN

Stack Overflow用户

发布于 2014-03-28 19:17:17

我认为后者起作用是一种巧合。

每个expect语句都以某种方式计算为true或false。

例如

代码语言:javascript
复制
arr = ['a', 'b', 'c']
expect(arr).to include('a')

将返回true,因为arr包含'a'

因此,在您的示例中,expect(subject)expect(subject).to be_true在某种程度上相当于以下内容:

代码语言:javascript
复制
bool = true
if bool
  # Do something here

if bool == true
  # Do something here

长话短说,这并不重要,但出于可读性的考虑,我更喜欢expect(subject).to be_true

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22721084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档