2015-04-05 78 views
1

我的问题是如何创建模拟对象而不是如何创建模拟对象使用库如何模仿

我曾看过Mockito图书馆的源代码,但我不明白它是如何完成的。我在互联网上搜索过,但文章解释了什么是模拟对象以及如何使用库创建它们。

对于动态编程语言,也许它很简单,因为我们可以改变方法,可变的,但它在静态编程语言实现(Java为例)

+0

这取决于。任何来自[cglib](https://github.com/cglib/cglib)的动态创建类到['Proxy'](https://docs.oracle.com/javase/7/docs/api/java/朗/反映/ Proxy.html)。这个问题太广泛了。 – 2015-04-05 10:31:50

+0

我真的不确定Java是什么意思的动态语言。 – thefourtheye 2015-04-05 10:32:01

+0

是的,你能定义一个静态和动态语言之间的区别是什么? – 2015-04-05 10:36:36

回答

1

如何让我们用什么模拟是开始:一个对象,你可以设置的预期关于预期被调用的方法,和/或那些方法上的参数和/或这些方法上的调用计数。

模拟被发送到测试对象以模仿某些依赖关系而无需使用真实代码(在许多情况下,这是有问题/危险的,例如处理支付网关)。

由于嘲笑需要拦截对所有(或部分嘲笑)方法的调用,因此主要取决于语言提供的功能,可以采用几种方法实现它们。特别是在Java中,这可以通过代理类实现:https://stackoverflow.com/a/1082869/1974224,这种方法有点迫使你(但以一种好的方式)在依赖关系时使用代码中的接口。