使用Typescript和Axios的MochaJS中的抽象问题



typescript和mocha的新手,所以希望这是一个简单的解决方案,我自己似乎无法解决。

给定以下测试用例

it('should make a request', function (done) {
console.log('CHECKPOINT ALPHA')
var data = JSON.stringify({"REDACTED"});
var headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
}
const response = request("post", rootUrl, headers, data, done)
//todo add some validations
done()

导入的request函数我在另一个文件中定义为:

export function request(method, url, headers, data, done, statusCode = null) {
console.log('CHECKPOINT BETA')
let config : AxiosRequestConfig = {
method: method,
url: url,
headers: headers,
data : data
};
if(statusCode == null) {
switch (method) {
case "post":
statusCode = 201;
break;
case "get":
statusCode = 200;
break;
case 'patch':
statusCode = 201;
break;
case 'put':
statusCode = 201;
break;
case 'delete':
statusCode = 204;
}
}
console.log('CHECKPOINT CHARLIE')
axios(config)
.then(function (response) {
console.log('CHECKPOINT DELTA')
assert(response.data.statusCode == statusCode)
console.log(JSON.stringify(response.data))
done()
})
.catch(function (error) {
console.log('CHECKPOINT ECHO')
fail(error)
done()
});
}

我通常希望这能奏效,并提出请求。相反,控制台的最后一个日志始终是checkpoint Charlie。同样,在运行调试器时,它似乎会跳过axios调用的整个主体。

如果我将请求函数的内容复制到测试用例的主体中,那么一切都会按预期进行,因此这与两个文件的相互作用有关。我的猜测是,axios块中的done()方法与测试文件中的方法不一样,导致测试在axios块内的任何代码正确执行之前继续并终止执行。

问题的简短版本——如何让脚本在axios块中执行代码,同时将这些代码保存在单独的文件中?理想情况下,我希望将axios的响应返回到测试脚本

找到了。在原始测试用例中调用done((告诉mocha,在axios调用的异步部分执行之前,测试用例已经完成执行。去掉那条线,我进入了街区。

it('should make a request', function (done) {
console.log('CHECKPOINT ALPHA')
var data = JSON.stringify({"REDACTED"});
var headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
}
const response = request("post", rootUrl, headers, data, done)
//todo add some validations

最新更新