回答您的问题
在这个代码片段中,请求是真的发送到服务器还是只是一个模拟?
这只是一个模拟。没有请求,只返回“回复”。这称为模拟,在编写测试时非常流行和有用。
如果您通常不熟悉不同类型的测试,那么这个答案非常值得一读。
如果它没有真正进入服务器,那么这似乎是无用的。
如果您想测试整个系统:即您的网站 + 后端逻辑(如身份验证、数据检索等),那么是的,这是没用的。但是您不会为此使用模拟。
集成测试通常针对正在运行的系统执行,它们很有价值,但很难维护,并且执行速度通常较慢。您不仅要处理测试,还要处理数据。
你什么时候使用模拟
模拟对于对代码进行单元测试是必不可少的。模拟有助于将您的前端代码逻辑与动态行为隔离开来。这使您可以更轻松地模拟许多场景,而无需维护数据的开销。
示例场景
用例
在您的应用程序中,您必须根据 REST 端点对用户进行身份验证。预计:
- 用户登录成功后,标题中会显示注销按钮。
- 当用户密码过期时,会显示“更改密码”屏幕。
- 当用户输入错误的凭据时,会显示警告
- 当后端没有响应时,用户会看到一个屏幕稍后再试
如果没有模拟,您需要确保在身份验证系统中配置了准确的数据。根据经验,我可以告诉你这很难,尤其是 #2 和 #4。
但是使用模拟,您可以只配置模拟以在每个 it()
块中/之前为每个场景返回您期望的响应。
这也更容易维护,因为期望(assert/expect 语句)设置在测试数据(mock.reply())附近。