最近我开始为我正在开发的angular应用编写单元测试。
有一件事我不太确定,就是在Angular环境下单元测试和集成测试之间的差异。
假设我要测试一个依赖于另一个(非angular)服务的控制器,那么我应该创建一个服务的模拟还是尽可能使用真实服务。
如果我注入服务本身,这难道不意味着我在创建一个集成测试而不是一个单元测试吗?
我问这个问题是因为我的同事们一直在编写将真实服务注入并称其为单元测试的测试。当你必须调试测试中注入服务的错误时,这真的很糟糕,特别是每个服务都依赖于其他5个服务...
$provide
来模拟这些依赖项作为整体,但通常当您需要多个服务时,只需注入真实内容并使用“存根”来定义测试的行为即可。单元测试最大的敌人是服务内部的“状态”,您需要尽可能少地在服务内部维护它。 - FrailWords