在RSpec中,存根有什么区别!和存根?

时间:2011-09-18 23:52:06

标签: ruby rspec rspec2

我已经看过很多次了,从来没有真正停下来质疑它。现在让我想知道存根和存根之间是否存在差异!

有吗?还是历史性的?存根!意味着它存在一次?并返回正常的方法调用?

1 个答案:

答案 0 :(得分:13)

在版本2和v1.3.2中,它们只是彼此的别名。在v1.3.2中,stubstub!

的别名

https://github.com/dchelimsky/rspec/blob/v1.3.2/lib/spec/mocks/methods.rb#L12

在rspec 2的v2.6中,stub!stub的别名

https://github.com/rspec/rspec-mocks/blob/master/lib/rspec/mocks/methods.rb#L12

但是在v1.1.4中,stubmock的别名,stub!是一个单独的方法。从文档中可以看出,在这个早期版本中,stub!用于向现有对象添加方法,创建了“部分模拟”。

解释:
https://github.com/dchelimsky/rspec/blob/1.1.4/lib/spec/mocks.rb#L43

定义:
https://github.com/dchelimsky/rspec/blob/1.1.4/lib/spec/mocks/spec_methods.rb#L27
https://github.com/dchelimsky/rspec/blob/1.1.4/lib/spec/mocks/methods.rb#L12