使构建在生产上失败,但在开发模式上失败

时间:2020-02-27 09:00:29

标签: angular typescript

我目前正在开发Angular应用程序,想知道是否可以使生产失败,但不能在本地开发中失败。

例如,我有一个复杂的登录逻辑,我想在开发时解决这个问题。 为此,我只需要在app.component.ts中插入一行:

ngOnInit(): { 
  this.userservice.mockLoginUser(); 
  ... 
}

是否有任何方法可以使这条生产线在开发模式下运行,但是如果我在生产中忘记它,就会失败吗?例如,创建一个仅在ng build --prod上失败的命令(而不是在ng serve上失败的命令)?

仅使用environment.ts是一种选择,因为我不想污染代码库,我想实际删除它(以及mockLoginUser方法),因为我只需要它在少数情况下。我的另一个想法是创建一条tslint规则,该规则将阻止该规则投入生产,但找不到任何规则。

1 个答案:

答案 0 :(得分:1)

为什么不使用单元测试?

在我正在研究的一个项目中,我们有一个微型前端应用程序,当独立运行(没有容器)时,很难对其进行身份验证。

我经常在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管道会自动运行测试。