Angularjs 单元测试与在SPA中模拟API的E2E测试

Angularjs 单元测试与在SPA中模拟API的E2E测试,angularjs,jasmine,protractor,karma-jasmine,Angularjs,Jasmine,Protractor,Karma Jasmine,在效率和代码覆盖率方面,当您可以编写量角器e2e测试和模拟http请求、第三方API等时,为什么还要编写jasmine单元测试 您可以做出与单元测试相同的特定断言,因为大多数断言对象都具有UI表示 您可以覆盖更大的流(如果我有一个运行指令的控制器,它运行另一个指令…) 这样可以节省时间。E2E测试的编写速度要快得多 因此,我认为使用模拟http请求的E2E测试更有价值,但大多数开发人员坚持编写单元测试 我在这里遗漏了什么?一些没有正确组织和结构的想法 需要进行单元测试和e2e测试。它们有不同的目

在效率和代码覆盖率方面,当您可以编写量角器e2e测试和模拟http请求、第三方API等时,为什么还要编写jasmine单元测试

  • 您可以做出与单元测试相同的特定断言,因为大多数断言对象都具有UI表示
  • 您可以覆盖更大的流(如果我有一个运行指令的控制器,它运行另一个指令…)
  • 这样可以节省时间。E2E测试的编写速度要快得多
  • 因此,我认为使用模拟http请求的E2E测试更有价值,但大多数开发人员坚持编写单元测试


    我在这里遗漏了什么?

    一些没有正确组织和结构的想法

    需要进行单元测试和e2e测试。它们有不同的目的,在不同的范围内工作

    下面是一篇关于e2e与单元测试视角下测试的真正价值的非常有趣的文章:它指出,理想情况下,您应该瞄准以下金字塔,主要关注单元和集成测试:

    单元测试是轻量级的,旨在独立地检查系统的特定功能/组件-它们应该很快,并为您提供即时和非常具体的反馈-在代码中的哪一行发生错误,哪里出了问题

    另一方面,端到端测试在更高的层次上工作——从用户的角度检查应用程序作为一个整体,所有活动部分一起工作。当e2e测试失败不能给你很多关于什么地方出了问题,什么原因导致了失败的信息时,这是很常见的

    通常,单元测试由开发人员自己编写,而端到端测试由测试人员/QA专家编写

    此外,还有很多关于这个主题的信息:


    也许我的问题不够清楚。我确实理解单元测试和集成测试之间的区别,以及在大多数情况下分离它们的重要性。但我说的是茉莉花和量角器。我的观点是,使用模拟服务器API的e2e测试可以告诉我单元测试可以告诉我的一切(因为UI中表示的大多数断言对象)。所以是的,如果我有一个e2e测试,它通过一个坏的模块是不会通过的,但我仍然能够知道哪个模块坏了,为什么坏了。就像在一个单位里一样test@jvrnt是的,我把答案的焦点转移到了基本的区别上,对不起。在e2e测试失败的情况下,反馈-错误堆栈跟踪永远不会像单元测试那样具体和清晰。您可能也无法通过e2e测试获得最大的测试覆盖率和模块的所有角落。另外,e2e测试会给您带来不必要的开销,如启动selenium服务器、浏览器、加载整个应用程序等。。