【问题标题】:Angular unit test vs integration testAngular 单元测试与集成测试
【发布时间】:2016-05-05 22:15:49
【问题描述】:

我最近开始为我正在开发的 Angular 应用程序编写单元测试。 我不确定一件事,那就是 Angular 上下文中的单元测试和集成测试之间的区别。

假设我有一个控制器要测试,它依赖于另一个(非角度)服务,我应该创建一个服务的模拟还是尽可能尝试使用真实的服务。

如果我注入服务本身是否意味着我正在创建集成测试而不是单元测试?

我之所以问这个问题,是因为我的同事一直在编写注入真实服务的测试,并且仍然称它们为单元测试。这很浪费时间,尤其是当您必须在测试中调试注入服务的错误并且每个服务都依赖于其他 5 个服务时...

【问题讨论】:

  • 根据我的经验,Angular 的测试(jasmine/mocha)涉及注入“真实”服务,但您的单元测试会通过所需的任何交互“存根”它们的行为。您可以使用$provide 将这些依赖项作为一个整体来模拟,但通常当您需要服务的多个事物时,注入真实事物并使用“存根”来定义测试的行为会更容易。单元测试的最大敌人是服务内部的“状态”,您需要尽可能少地维护服务内部的状态。

标签: angularjs unit-testing testing


【解决方案1】:

单元测试的目的是在独立于环境和其他单元的情况下验证底层单元的行为。本质上,如果您的被测系统或测试本身与外部系统交互,则这不是真正的单元测试。

几个月前,我就这个话题写了一封article。查看更多信息。

【讨论】:

  • 谢谢。你的回答真的很有帮助,它证实了我的想法。此外,这篇文章非常酷且有趣。
猜你喜欢
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 2010-10-23
相关资源
最近更新 更多