在 SPA 中模拟 API 的单元测试与 E2E 测试
Unit tests vs E2E test with mocked out API in SPA
就效率和代码覆盖率而言,当您可以编写 Protractor e2e 测试并模拟 http 请求、第 3 方 API 等时,为什么还要编写 jasmine 单元测试?
- 您可以做出相同的特定断言,例如在单元测试中,因为大多数断言对象将具有 UI 表示。
- 你涵盖了更大的流程(如果我有一个控制器运行一个指令,它运行另一个指令......)。
- 节省时间。 E2E 测试编写起来要快得多。
所以我认为使用模拟 http 请求进行 E2E 测试具有更大的价值,但大多数开发人员坚持编写单元测试。
我在这里错过了什么?
一些没有正确组织和结构化的想法..
单元测试和端到端测试都需要。他们有不同的目的,在不同的范围内工作。
这里有一篇非常有趣的文章,主题是从端到端与单元测试的角度来看测试的真正价值:Just Say No to More End-to-End Tests 指出,理想情况下,您应该瞄准以下金字塔,主要关注单元和集成测试:
单元测试是轻量级的,旨在孤立地检查系统的特定 functions/components - 它们应该是快速的并为您提供即时且非常具体的反馈 - 在代码的哪一行发生错误, 哪里出了问题。
另一方面,端到端测试在更高级别上工作 - 从用户的角度检查您的应用程序的整体,所有移动部分一起工作。当 e2e 测试失败时,很常见的情况是没有为您提供很多关于出错的地方、失败的位置和原因的信息。
通常,单元测试由开发人员自己编写,而端到端测试由 testers/QA 专家编写。
而且,还有很多关于这个主题的信息:
- What's the difference between unit tests and integration tests?
- What is the difference between integration and unit tests?
- End-to-end tests versus unit tests, should tests be decoupled?
就效率和代码覆盖率而言,当您可以编写 Protractor e2e 测试并模拟 http 请求、第 3 方 API 等时,为什么还要编写 jasmine 单元测试?
- 您可以做出相同的特定断言,例如在单元测试中,因为大多数断言对象将具有 UI 表示。
- 你涵盖了更大的流程(如果我有一个控制器运行一个指令,它运行另一个指令......)。
- 节省时间。 E2E 测试编写起来要快得多。
所以我认为使用模拟 http 请求进行 E2E 测试具有更大的价值,但大多数开发人员坚持编写单元测试。
我在这里错过了什么?
一些没有正确组织和结构化的想法..
单元测试和端到端测试都需要。他们有不同的目的,在不同的范围内工作。
这里有一篇非常有趣的文章,主题是从端到端与单元测试的角度来看测试的真正价值:Just Say No to More End-to-End Tests 指出,理想情况下,您应该瞄准以下金字塔,主要关注单元和集成测试:
单元测试是轻量级的,旨在孤立地检查系统的特定 functions/components - 它们应该是快速的并为您提供即时且非常具体的反馈 - 在代码的哪一行发生错误, 哪里出了问题。
另一方面,端到端测试在更高级别上工作 - 从用户的角度检查您的应用程序的整体,所有移动部分一起工作。当 e2e 测试失败时,很常见的情况是没有为您提供很多关于出错的地方、失败的位置和原因的信息。
通常,单元测试由开发人员自己编写,而端到端测试由 testers/QA 专家编写。
而且,还有很多关于这个主题的信息:
- What's the difference between unit tests and integration tests?
- What is the difference between integration and unit tests?
- End-to-end tests versus unit tests, should tests be decoupled?