Angular的模拟与间谍

cnak2

我是Angular的新手,正在从事单元测试。

我试图确认我对假货与间谍(spyOn)的了解。

我的理解是,使用Fakes,您可以模拟未从服务中真正返回的数据。它只是像从服务传递过来一样进行模拟。

另一方面,间谍程序使您可以实际调用或监视服务,并获取真实结果以在测试中进行比较。

我对么?

露西亚(Lucia A.

这是一些信息,可以帮助您更好地改变现状:

虚拟对象可以传递,但从未实际使用过。通常它们仅用于填充参数列表。

对象实际上具有有效的实现,但是通常采取一些捷径,这使它们不适合生产(内存数据库就是一个很好的例子)。

存根提供对测试期间进行的呼叫的固定答复,通常通常根本不响应测试中编程的内容。

间谍是存根,它们还根据调用方式记录一些信息。其中一种形式可能是电子邮件服务,它记录发送了多少消息。

嘲笑是我们在这里谈论的:带有期望的预编程对象,这些对象形成了期望接收的呼叫的规范。

在这里长篇文章

现在您知道了存根和间谍之间的区别是什么,这里有一些更多的信息可以更好地解释它:)

测试替身是可以在测试中代表真实对象的对象,类似于特技替身代表电影中的演员的方式。有时这些通常都被称为“模拟”,但是区分不同类型的测试双倍很重要,因为它们都有不同的用途。测试双打最常见的类型是存根,模拟伪造品

存根没有逻辑,只会返回您告诉它返回的内容。当您需要一个对象返回特定值以使被测代码进入某种状态时,可以使用存根。尽管通常手工编写存根很容易,但是使用模拟框架通常是减少样板的便捷方法。

一个模拟对它应该被调用的方式抱有期望,并且如果不以这种方式来调用,那么测试应该会失败。模拟用于测试对象之间的交互,在没有其他可见状态更改或可验证的返回结果的情况下很有用(例如,如果代码是从磁盘读取的,并且您想确保它不会做更多的事情)读取一次磁盘,您可以使用模拟来验证执行读取的方法仅被调用一次)。

伪造品不使用模拟框架:它是API的轻量级实现,其行为类似于真实的实现,但不适合生产(例如内存数据库)。当您无法在测试中使用真实的实现时(例如,真实实现太慢或它通过网络进行通信时),可以使用伪造。您不需要经常编写自己的伪造品,因为伪造品通常应由拥有实际实现的人员或团队创建和维护。

这里的代码示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章