我在测试用例中发现了这种奇怪的行为。
让我们重新创建场景
我有两个类:
API。ts→它指的是我创建请求的类。
API-op。ts→它指的是我通过断言、期望等进行验证的类。
Context:方法之间存在一些依赖关系。如果我想要发布,我首先需要一个ID,这个ID从一个叫做postCreateId的功能变成。有了响应体之后,我将使用该ID传递给我的postPublishArt方法
。
我在api中有这个方法。
public postPublishArt(token: any, Id: any) {
return chai.request(URLBASE)
.post(URI)
.set({ Authorization: "Bearer " + token })
.send({
id: Id
})
}
我在API-op上调用那个功能。是这样的:
public async postPublish() {
var accessToken = undefined;
return this.chaiClass.generateToken()
.then(async (response) => {
accessToken = response.body.AccessToken;
return this.chaiArt.postCreateId(accessToken)
.then(async (response) => {
let id = response.body.id;
let array: Array<string> = [id];
return this.chaiArt.postPublishArt(accessToken, array)
.then(async (response) => {
expect(response).to.have.status(201);
return response;
}).catch(err => {
return console.log('Failure', err);
});
});
});
}
在Postman中,body参数需要像这样:
{
"ids":
[
"d2164919-730a-5fe2-924d-5c14cf36e38c"
]
}
注意方括号因为body参数要求id的键必须是数组。
什么是错误:就像我只需要一个id传递作为一个数组,一旦我转换该变量,它被发送到POST方法。POST方法显示如下错误:
text:'{"errors":[{"code":"unexpected-exception","details":{"statusCode":500,"error":"invalid input syntax for type timestamp: \"0NaN-NaN-NaNTNaN:NaN:NaN.NaN+NaN:NaN\""}}]}'
我认为这个问题是关于chai-http当你发送POST与ARRAY,但只是传递一个参数。
如果我错了请告诉我
ANSWER:有一个问题,sugerAgent没有回调send方法…
见下面报告的问题和解决方法:https://github.com/chaijs/chai-http/issues/290