我目前正在开发一个Angular应用程序,想知道我是否可以在生产中使构建失败,但在本地开发中不能。
例如,我有一个复杂的登录逻辑,我想在开发时绕过它。为此,我只需要在app.component.ts
:中介绍一行
ngOnInit(): {
this.userservice.mockLoginUser();
...
}
有没有办法让这条生产线在开发模式下运行,但如果我在生产中忘记了它,就会很难失败?例如,创建一个仅在ng build --prod
时失败的命令(但不适用于ng serve
(?
仅仅使用environment.ts
不是一种选择,因为我不想污染代码库,我想物理删除它(以及mockLoginUser
方法(,因为我只在少数情况下需要它。我的另一个想法是创建一个tslint规则,阻止它进入生产,但找不到任何规则。
为什么不使用单元测试
在我工作的一个项目中,我们有一个微型前端应用程序,当它独立运行时(没有容器(很难进行身份验证。
我经常在ngOnInit
:中设置我的开发永无止境的JWT
ngOnInit() {
this.authService.setJwt('ey....');
}
然后我有一个简单的单元测试,它正在查看:
it('should not initialize JWT on component initialization', () => {
const authService = TestBed.inject(AuthService);
spyOn(authService, 'setJwt');
fixture.detectChanges();
expect(authService.setJwt).not.toHaveBeenCalled();
});
多亏了这一点,我永远不会忘记删除这个"开发代码行"。我的代码库没有被那些不必要的语句污染。此外,我甚至无法将代码推送到任何分支,因为我们的gitlab管道会自动运行测试。