mockjs 的功能是模拟数据:
http://mockjs.com
请问vitest 里面的mocking功能:
https://cn.vitest.dev/guide/mocking
是否是指的和mockjs一样的功能,用于模拟数据使用呢?
也就是说使用了vitest 的mocking功能,就不必再引入mockjs,是吗?
mockjs 的功能是模拟数据:
http://mockjs.com
请问vitest 里面的mocking功能:
https://cn.vitest.dev/guide/mocking
是否是指的和mockjs一样的功能,用于模拟数据使用呢?
也就是说使用了vitest 的mocking功能,就不必再引入mockjs,是吗?
答案:
Vitest 的 mocking 功能与 Mock.js 的功能并不完全相同,尽管它们都可以用于模拟数据,但它们的用途和上下文有所不同。
因此,使用了 Vitest 的 mocking 功能,并不意味着你就不需要 Mock.js。如果你的测试场景需要模拟外部数据(如 API 响应),并且你正在使用 AJAX 或 Fetch 等技术来请求这些数据,那么 Mock.js 可能仍然是一个有用的工具。然而,如果你的测试场景主要关注于模块或函数的内部逻辑,并且你只需要模拟这些模块或函数的返回值,那么 Vitest 的 mocking 功能可能就足够了。
简而言之,两者各有其用,选择哪个取决于你的具体需求和测试场景。
27 回答14.9k 阅读
8 回答3.8k 阅读✓ 已解决
6 回答1.7k 阅读✓ 已解决
5 回答5.5k 阅读✓ 已解决
6 回答1.4k 阅读
3 回答1.9k 阅读
3 回答2.1k 阅读✓ 已解决
功能上的区别就不提了,估计你想问的也只是关于 AJAX 这一块。
它俩的侧重点和应用的阶段不一样。
前者原理是拦截了浏览器环境下的 XHR,一般是应用在开发阶段,它是跑在浏览器里的。
现在很多都是前后端分离开发,前端所需的数据都通过 AJAX 取自后端接口。那么很多时候就有一个问题,前端需要某些边界场景的数据,后端没有能力提供给你、或者能提供但成本很高,该怎么办?
要是还不能理解,我就随便举几个场景的例子:
这种场景下你要是作为前端,要么就只能等着后端,要么就得自己改代码想办法模拟数据(比如场景二里你把 if 判断条件改了好方便自己触发)。但你等着了 deadline 可不等你;自己模拟数据如果是在视图层改的话侵入性又太强、如果涉及组件多的话可能得改好几处、最后再忘记改回去了可就操蛋了。
于是大家就想,既然直接在视图层里去模拟数据侵入性强,那我在源头 —— 也就是 AJAX 这层 —— 直接给视图层返回一个模拟的响应不就好了?于是 mockjs 就应运而生了。
后者一般应用在测试阶段,或者开发阶段里 CI/CD 流程的单测阶段,它是跑在 Node 里的。
这个就纯粹是单测用例需要模拟数据了,不展开讲了。
至于为啥单测也要模拟数据,那可能就非常多了。比如只是为了验证某流程是否能跑通,并不需要真实地调用接口,否则跑一次单测后端产生一堆垃圾数据,即便有测试环境也挺闹心。或者说这个用例并不跟后端接口强耦合,否则后端的接口一旦挂了,结果你前端的用例跑不通了,不也很奇怪?