以下测试用例验证服务(使用 Angular HttpClient 执行发布请求)是否确实使用了某些标头。
我想编写一些自定义匹配代码来检查标头是否包含某个键和值,例如:
fact
我的问题是在下面的示例headers.get('Session') === 'abc'
写什么?
???
这可能吗?
答案 0 :(得分:0)
我创建了这个匹配器类:
class HttpHeadersMatcher {
constructor(private check: { [name: string]: string }) {
}
public asymmetricMatch(options: any): boolean {
const headers: HttpHeaders = options.headers;
assert.equal(options.observe, 'response');
Object.keys(this.check)
.forEach((key: string) => {
assert.equal(headers.get(key), this.check[key], `The header '${key}' does not have the correct value`);
});
return true;
}
public jasmineToString(): string {
return `<HeaderMatching: ${JSON.stringify(this.check)}>`;
}
}
使用方法如下:
expect(http.post).toHaveBeenCalledWith(`http://localhost/odata/Employees`, jasmine.any(String), new HttpHeadersMatcher({ 'Session': 'abc' }));
我的项目和示例测试代码也可以在这里找到:angular-odata-es5 : angularODataService.spec.ts