我用Fetch API编写了一个POST调用测试。为了检查我是否发送了好的参数,我使用了jasmine toHaveBeenCalledWith,并且可以正常使用字符串体。
当我从es6而不是Angular将此字符串更改为URLSearchParams对象时。测试变为红色,但预期的呼叫和呼叫完全相同。
你有个主意吗?
测试:
...
mockHttp = {post: null} as Http;
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let searchParams = new URLSearchParams();
searchParams.set("refresh_token", token.refreshToken);
searchParams.set("grant_type", "refresh_token");
searchParams.set("client_id", "DriverApp");
expect(mockHttp.post).toHaveBeenCalledWith("ENDPOINT_API_URL_REFRESH_TOKEN", searchParams, {headers: headers})
...
答案 0 :(得分:0)
使用jasmine的自定义相等测试器:
在测试文件中添加此功能:
function customEquality(expected: any, value: any): boolean {
return JSON.stringify(expected).trim() === JSON.stringify(value).trim();
}
在beforeEach中添加以下行:jasmine.addCustomEqualityTester(customEquality);
并正常使用toHaveBeenCalledWith