【问题标题】:Rspec tests, difference between should vs expectRspec测试,应该与期望之间的区别
【发布时间】:2013-12-22 18:29:57
【问题描述】:

我正在测试我的模型。

我有以下测试:

it "....." do
  perm = FactoryGirl.create(:permission)
  new_permission = perm.dup

  new_permission.valid?.should be_false
end

此测试通过。但是,如果我将其更改为:

expect { new_permission.valid? }.to be_false

为什么?

我收到以下错误:

     Failure/Error: expect{new_permission.valid?}.to be_false
   expected: false value
        got: #<Proc:0x007f9d20298258@/Users/..../Desktop/Projects/.../spec/models/permission_spec.rb:16>

有什么想法吗?

【问题讨论】:

  • 但是你试过了吗? expect { new_permission.valid? }.to be_falseexpect(new_permission.valid?).to be_false ?
  • 块可用于Expecting errors YieldingExpecting throws
  • @Monk_Code 让它成为答案!
  • @AndrewMarshall 谢谢我不确定

标签: ruby ruby-on-rails-3 rspec


【解决方案1】:

代替

expect { new_permission.valid? }.to be_false

使用

expect(new_permission.valid?).to be_false

block 形式可以用于 Expecting 和 Yielding。您可以阅读有关the difference between should and expect in the docs 的更多信息。

【讨论】:

  • 感谢您的回答。 Monk,你能解释一下这句话吗:block 可以用于 Expecting 和 Yielding 吗?谢谢。
  • @Tony 查看raise_error matcheryield matchers 的文档。
  • expect(new_permission).to_not be_valid 将是编写该规范的更好方法。 @托尼
猜你喜欢
  • 2013-11-26
  • 1970-01-01
  • 2016-03-03
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
  • 2022-07-06
相关资源
最近更新 更多