我正在使用具有端点的 3rd 方 API,该/places
端点返回经过身份验证的用户具有 JSON 权限的位置信息。该 API 使用 JWT 作为身份验证,令牌放在X-Auth-Token
标头中。
我的项目有一项服务,该服务使用多个用户帐户向该 3rd 方 API 进行身份验证。我的一个测试用例是测试该服务,以便/places
调用两次。该服务向 3rd 方 API 进行身份验证,并X-Auth-Token
在请求之前将令牌设置为/places
。
我试图模拟 3rd 方 API,如下所示:
nock(apiUrl)
.matchHeaders("x-auth-token", firstToken)
.get(/places/)
.reply(200, placeList1);
nock(apiUrl)
.matchHeaders("x-auth-token", secondToken)
.get(/places/)
.reply(200, placeList2)
但是 Nock 向我抛出了请求不匹配的错误。如果我尝试
nock(apiUrl)
.matchHeaders("x-auth-token", (value) => {
console.log(value)
return value === firstToken;
})
.get(/places/)
.reply(200, placeList1);
我可以看到X-Auth-Token
其中一个请求的值是正确的,但端点仍然不匹配。
难道我做错了什么?或者甚至有可能对同一范围内的同一路径发出多个请求,并且使用 Nock 做出不同的响应?由于我的服务正在使用 Promises,因此我不能依赖创建请求的顺序。
我request-promise-native
在我的服务中使用并使用 Mocka 运行我的测试。