43

我是mockito的新手。

需要知道存根和何时之间的区别

      1. stub(cpproxy.getBinList()).toReturn(gettestbins());
      2. when(cpproxy.getBinList()).thenReturn(gettestbins());

这两者有什么区别?

4

1 回答 1

78

实际上,它们在技术上是相同的。最初创建 Mockito 时,我们谈论的是存根,因此词汇表遵循了这个想法。后来人们认为用交互而不是技术术语来思考更好,所以词汇遵循了when ... then ...风格。这种词汇的变化有助于人们思考对象之间的交互消息传递。这是面向对象语言中最有趣的想法(消息传递)(引用 Alan Kay的话)。

如今,测试方法已经演变为行为驱动开发(来自 Dan North),这几乎是同一件事,但更多地关注设计时的行为。为了反映这种想法,人们要求 Mockito 提供反映这种变化的 API。所以你也使用given ... will ... style fromBDDMockito

given(the_type.performs_that()).willReturn(something)

这是我现在最喜欢的词汇,因为我使用测试来驱动我的对象设计。

于 2013-02-06T19:25:53.350 回答