【发布时间】:2016-05-05 22:15:49
【问题描述】:
我最近开始为我正在开发的 Angular 应用程序编写单元测试。 我不确定一件事,那就是 Angular 上下文中的单元测试和集成测试之间的区别。
假设我有一个控制器要测试,它依赖于另一个(非角度)服务,我应该创建一个服务的模拟还是尽可能尝试使用真实的服务。
如果我注入服务本身是否意味着我正在创建集成测试而不是单元测试?
我之所以问这个问题,是因为我的同事一直在编写注入真实服务的测试,并且仍然称它们为单元测试。这很浪费时间,尤其是当您必须在测试中调试注入服务的错误并且每个服务都依赖于其他 5 个服务时...
【问题讨论】:
-
根据我的经验,Angular 的测试(jasmine/mocha)涉及注入“真实”服务,但您的单元测试会通过所需的任何交互“存根”它们的行为。您可以使用
$provide将这些依赖项作为一个整体来模拟,但通常当您需要服务的多个事物时,注入真实事物并使用“存根”来定义测试的行为会更容易。单元测试的最大敌人是服务内部的“状态”,您需要尽可能少地维护服务内部的状态。
标签: angularjs unit-testing testing