回顾了下新版的 Rails Tutorial,发现新版的 Rspec 的用法不同了。
从之前的
true.should be_true
改成了现在的
expect(true).to be_true
请问下这两着有什么区别,为什么现在要改成 expect 的风格
因为expect的实现侵入性比较低,expect方法会返回一个代理对象,上面绑定了一些可以用来进行断言的方法。
expect
而should的实现是将should一类的方法直接注入到所有的对象里,破坏性比较高。如果你自己定义了一些和should一类同名的方法就悲剧了。
should
#1 楼 @_kaichen 明白啦,谢谢回答
expect { this_block }.to raise_error
expect 可以
如果你现在做个新项目,请习惯使用 expect,RSpec 3 将会移除 should 语法。
#1 楼 @_kaichen 你的意思是否是 expect 实际上就是 mock 了一个 Verifying doubles