【问题标题】:Spock difference between Mock() vs Spy() vs Stub()Mock() vs Spy() vs Stub() 之间的 Spock 区别
【发布时间】:2016-09-07 14:32:09
【问题描述】:

虽然this question已经回答了,但我仍然不清楚在模拟过程中应该使用哪一个

虽然指的是spock.lang.MockingApi.java。我无法捕捉到这些之间的任何区别。

Mock的文档说

Person person = Mock() // type is Person.class, name is "person"

Spy 的文档说

Person person = Spy() // type is Person.class, name is "person"

Stub 的文档说

Person person = Stub() // type is Person.class, name is "person"

这清楚地表明其中任何一个都没有区别。那么为什么我们有这三种模拟策略,以及它们之间的区别以及何时使用它们。

如果它是带有示例代码的答案,那将非常有帮助。

【问题讨论】:

标签: java unit-testing spock


【解决方案1】:

来自https://github.com/spockframework/spock/blob/master/docs/interaction_based_testing.adoc

存根是让协作者响应方法调用的行为 某种方式。存根方法时,您不在乎是否以及多少 该方法将被调用的次数;你只是想让它回来 每当它被调用时,就会有一些价值,或者执行一些副作用。

间谍总是基于真实对象。因此你必须提供一个类 类型而不是接口类型,以及任何构造函数 类型的参数。 对间谍的方法调用会自动委托给真实对象。 同样,从真实对象的方法返回的值被传递 通过间谍返回给调用者。

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 2014-08-16
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多