我正在使用 Azure Pipelines YAML 格式设置管道。我创建了 3 个阶段:构建、暂存和生产。顾名思义,构建阶段构建项目并发布构建工件。Staging 阶段部署到 Staging 环境,Production 阶段部署到 Production 环境。
在我的项目的 Environments 部分,我添加了对生产环境的检查,以便我可以在上线之前批准部署。
我的管道的工作方式是在 Build 阶段完成后自动触发 Staging 和 Production 阶段。我不喜欢这一点的是,当开发人员将他们的代码部署到 Staging 时,他们需要几天时间在 Staging 上对其进行测试,然后再将他们的代码推送到生产环境。所以,在那之前,我的管道一直在运行并等待我的批准。左上角的微调器不断旋转,“持续时间”字段不断传递。
有什么方法可以让开发人员在准备就绪时手动触发生产阶段而不是构建阶段触发它?
我的angular2应用程序中有一个异步函数,我想为其编写单元测试。想象一下我的函数是这样的:
myFunc(a: int): Promise<void> {
if (a == 1)
throw new Error('a should not be 1');
let body = {
value: a
};
return apiService.patch('/url/', JSON.stringify(body)).toPromise();
}
Run Code Online (Sandbox Code Playgroud)
现在,我正在考虑检查是否满足条件。我尝试了以下代码;但是,此测试始终失败,因为我的代码实际上并不等待任何结果:
it('should throw error if a = 1', () => {
expect(() => {
mySerivce.myFunc(1);
}).toThrow(new Error('a should not be 1'));
})
Run Code Online (Sandbox Code Playgroud)
我不知道该如何为这些类型的逻辑编写单元测试...
我正在尝试使用茉莉花和业力在angular2 + webpack中运行一个简单的单元测试。以下是我的测试:
it('my test', () => {
let myObject = new MyObject();
myObject.name = 'My Name';
expect(myObject.name).toBe('My Name');
});
Run Code Online (Sandbox Code Playgroud)
运行时,我收到以下错误:
TypeError: index_1.MyObject is not a constructor
Run Code Online (Sandbox Code Playgroud)
我还尝试了在项目中定义的枚举类型的简单javascript类型:
it('my test', () => {
let myObject = {
name = 'My Name',
hairColor = HairColor.Brown
}
expect(myObject.name).toBe('My Name');
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我收到以下错误:
TypeError: Cannot read property 'Brown' of undefined
Run Code Online (Sandbox Code Playgroud)
这是我的对象和枚举类型:
export class MyObject {
name: string;
family: string;
hairColor: HairColor;
}
export enum HairColor {
Brown,
Black
}
Run Code Online (Sandbox Code Playgroud)
看起来Webpack没有向karma提供正确的输出js文件。以下是我的配置文件:
webpack.test.js
var webpack = …Run Code Online (Sandbox Code Playgroud) angular ×2
jasmine ×2
azure-devops ×1
karma-runner ×1
typescript ×1
unit-testing ×1
webpack ×1
yaml ×1