【发布时间】:2014-08-11 19:45:36
【问题描述】:
有足够多的questions 与此主题相关,但没有提供practial 示例引用差异。
根据Fowler 的文章模拟不是存根,存根是独立于外部调用的假方法,而模拟是对调用有预编程反应的假对象。
Stub 不会让您的测试失败,但 Mocks 可以。
模拟更具体且与对象相关:如果某些参数是 通过,则对象返回一定的结果。一个人的行为 对象被模仿或“嘲笑”。
存根更通用且与方法相关:通常是存根方法 对所有参数返回相同的结果。一个人的行为 方法被冻结、罐装或“存根”。
我们来看一个简单的test 案例。我们必须找到一个 Book 提供了 id 并与用户相关。
it "can find an Book that this user belongs to" do
project = Book.find( id: '22', email: user@test.com )
expect(project) to eq(some_data);
end
在上述情况下...什么是存根,什么是模拟?如果我的示例无效,谁能告诉我example 的 Mock and 存根。
【问题讨论】:
-
你能链接提到的文章吗?
-
是的,所以我认为这篇文章是关于 Java 的,使用的命名约定是指一些 Java 特定的约定,与 Ruby 和 Rspec 没有任何关系:)
标签: ruby-on-rails ruby unit-testing rspec