我已经看过很多次了,从来没有真正停下来质疑它。现在让我想知道存根和存根之间是否存在差异!
有吗?还是历史性的?存根!意味着它存在一次?并返回正常的方法调用?
答案 0 :(得分:13)
在版本2和v1.3.2中,它们只是彼此的别名。在v1.3.2中,stub
是stub!
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中,stub
是mock
的别名,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