Angular 2+ | ng测试环境变量

时间:2017-06-07 08:48:54

标签: angular logging environment-variables

问题:我有一个处理我的应用程序中的所有错误的服务,我想在我运行单元测试的情况下禁用服务中的日志记录。 (因为我在单元测试中测试失败,我的控制台充满了日志记录)。

可能的解决方案:我认为使用环境变量是有意义的。例如:logging文件中的environment.test.ts变量,但我很快就意识到无法使用不同的环境运行ng test(默认为开发)。

有没有人有另一个想法在运行单元测试时删除日志记录?

1 个答案:

答案 0 :(得分:1)

当你说'#34;单元测试" - 你的意思是单元测试还是你只是使用单元测试框架来进行集成测试?

如果您正在进行单元测试,并且您没有专门测试日志记录/错误服务,那么您应该在测试中存根(或模拟)该服务。

一个例子。如果要测试对日志记录服务具有依赖性的服务,则该依赖项应替换为" dummy"不记录到控制台窗口的服务。那个"虚拟" service是一个存根(没有记录,可能只是在调用时返回空/静态值),或者它可以是一个模拟(它将记录如何/何时/与它被调用的内容,以便您稍后检查测试)。

无论哪种方式,当你进行单元测试时,你应该只专门为那个单元命名代码(尽可能小的单位 - 一个方法,或者如果调用方法调用其他方法,有时候会有几个方法) (可能是私有的)同一类的方法)。你不应该每单元测试测试多个类。对于一个类,您通常会进行多次测试,甚至可以对一个类中的一个方法进行多次测试。

如果您实际上正在进行集成测试 - 我不会阻止您 - 那么您仍然可以存储您不想运行的功能 - 替换测试设置中的日志记录服务。 / p>

为了实现这一切 - 你需要一个好的架构。由于您正在测试typescript / javascript,因此替换服务比使用强类型语言更容易 - 如果您的架构没有为它做好准备 - 更具体地说,如果您不使用依赖注入... < / p>