RSpec 2 'something.should 是`

RSpec 2 'something.should be`

我遇到了一些看起来很可怕的东西 RSpec 2 测试:

something.should be

不,我不是不小心忘记了剪切+粘贴该行的其余部分, 就是这样!

那么它的确切语义是什么? should_not be_nil

请说明为什么这是糟糕的风格。

恕我直言,它草率、不精确,并且没有清楚地传达所需内容。 (它触发了我的呕吐反射;)

来自 docs:“我们建议您使用 expect 语法,除非您有特定原因更喜欢 should 语法。我们没有计划完全删除should 语法但开始 在 RSpec 3 中,如果您没有明确启用它,将发出弃用警告,并计划在 RSpec 4 中默认禁用它(并可能将其移至外部 gem )."

我相信新语法中的等价物是:

expect(something).to be

或更常见:

expect(something).not_to be_false

你是对的 - 根据文档 object.should.be 等于 object.should_not be_nil

Documentation,第一个列表中的第 4 个。