我是初学者测试axios调用并开始使用axios-mock-adapter但我不明白为什么我们使用axios-mock-adapter。
mock.onPost('/api').reply(200, userData, headers);
在此代码段中,请求是否真的发送到服务器,还是只是模拟?
因为如果我提供了错误的凭据,它会回复200状态,因为我在'回复'上识别它以返回200.
因此,如果我确定响应状态,使用它的原因是什么? 如果它没有真正进入服务器,似乎这没用。
也许我会想念一些我不知道的事情,因为我是新人,但有人应该在我的脑海中解释这个问题。
答案 0 :(得分:4)
在此代码段中,请求是否真的发送到服务器,还是只是模拟?
这只是一个模拟。没有请求,只是"回复"退回。这称为mocking,非常受欢迎,可用于编写测试。
如果您不熟悉不同类型的测试,this answer非常值得一读。
如果它没有真正进入服务器,似乎这没用。
如果你想整个系统测试:即你的网站+后端逻辑(如auth,数据检索等),那么是的,这是没用的。但是你不会使用 mock 。
集成测试通常针对正在运行的系统执行,它们很有价值,但很难维护,执行速度通常较慢。你不仅要照顾你的测试,还要照顾数据。
模拟对于单元测试代码至关重要。模拟有助于将前端代码逻辑与动态行为隔离开来。这使您可以更轻松地模拟许多场景,而无需维护数据的开销。
使用案例 在您的应用程序中,您必须针对REST端点对用户进行身份验证。预计:
如果没有模拟,您需要确保在身份验证系统中配置了确切的数据。根据经验,我可以告诉你这很难,特别是#2& #4。
但是对于模拟,您可以配置模拟以在每个 it()
块之前/之前/之前返回您期望的每个方案的响应。
这也更容易维护,因为期望(assert / expect语句)设置在测试数据附近(mock.reply())。