测试 Rspec should 和 expect 的区别

windless_j · August 22, 2013 · Last by hiveer replied at December 19, 2014 · 5551 hits

回顾了下新版的 Rails Tutorial,发现新版的 Rspec 的用法不同了。

从之前的

true.should be_true

改成了现在的

expect(true).to be_true

请问下这两着有什么区别,为什么现在要改成 expect 的风格

因为expect的实现侵入性比较低,expect方法会返回一个代理对象,上面绑定了一些可以用来进行断言的方法。

should的实现是将should一类的方法直接注入到所有的对象里,破坏性比较高。如果你自己定义了一些和should一类同名的方法就悲剧了。

#1 楼 @_kaichen 明白啦,谢谢回答

expect { this_block }.to raise_error

expect 可以

如果你现在做个新项目,请习惯使用 expect,RSpec 3 将会移除 should 语法。

#1 楼 @_kaichen 你的意思是否是 expect 实际上就是 mock 了一个 Verifying doubles

You need to Sign in before reply, if you don't have an account, please Sign up first.