Logo
Section 1 / 8

什么是模拟(Mocking)以及为什么我们需要它?

重新深入学习模拟(mocking),了解其确切含义以及在哪些场景下需要使用。

导入

什么是模拟(Mocking)以及为什么我们需要它?

重新深入学习模拟(mocking),了解其确切含义以及在哪些场景下需要使用。

什么是模拟(Mocking)?

尽管我们之前已经接触过模拟技术,但其实只是触及了这一广泛主题的皮毛。

Course Image

模拟是指用具有相同接口的模块替换软件中的原始模块。最关键的是,被模拟的模块不应产生任何副作用(例如调用网络服务、操作文件系统或操作系统等)。当我们无法将底层操作与业务逻辑解耦,或者需要验证调用参数和返回值时,就会使用模拟。

模拟分为两种类型:

  • 监视(Spying):函数调用仍然会发送到目标模块,但 Jest 会记录下这些调用及其参数,以便后续验证。例如,你可以验证网页是否在浏览器中正确存储了 Cookie。这种做法在每次测试运行时都没有问题。
  • 模拟(Mocking):函数调用不会真正到达目标模块,而是由你手动指定每次调用的返回值。这种方法适用于你不希望在每次测试中都发生某些副作用的情况,比如发起 API 请求、安装包,甚至发射火箭。

在接下来的课程中,我们将主要聚焦于模拟技术,而不会深入探讨监视,因为后者在实际项目中几乎不使用。

快速回顾

本节课我们讨论了模拟的概念、应用场景与目的,以及它的两种形式:模拟和监视。

更多测试

创建模拟对象