我正在测试我的API,它接收一个文件作为输入。我试过使用attach()函数,它运行得很好。为了涵盖我的所有用例,我必须使用大约20个不同的输入文件。我没有保留这20个文件,而是考虑将所有这些可能的输入存储在一个JSON文件中。
示例
{
"input-1":[
"Name, Email, Phone, Address",
"Sam, sam@xyz.com,0123498765,HomeAddress"
],
"input-2":[
"Name, Email, Phone, Address",
"Yam, Yam@xyz.com,0123498766,HomeAddress"
],
"input-3":[
"Name, Email, Phone, Address",
"Ram, Ram@xyz.com,0123498767,HomeAddress"
]
}在这里,每个条目(input-1、input-2、input-3)代表每个文件的内容。这只是个样本。对于每个这样的测试输入,实际文件将有多行。
因此,我需要的是提取每个input并在调用API时将其转换为一个文件。如何使用Chai实现这一点?
发布于 2022-02-16 09:43:51
您可以迭代数据,动态地创建测试和文件,并附加它们,包括服务器解析的所有与文件相关的信息:
const files = {
"input-1": [
"Name, Email, Phone, Address",
"Sam, sam@xyz.com,0123498765,HomeAddress"
],
"input-2": [
"Name, Email, Phone, Address",
"Yam, Yam@xyz.com,0123498766,HomeAddress"
],
"input-3": [
"Name, Email, Phone, Address",
"Ram, Ram@xyz.com,0123498767,HomeAddress"
]
}
describe('uploading', () => {
for (const [file, data] of Object.entries(files)) {
it(`file ${file} should pass`, (done) => {
chai.request(app)
.post('/endpoint')
// create file dynamically
.attach('file', Buffer.from(data, 'utf-8'), {
// add file info accordingly
filename: `${file}.txt`,
contentType: 'text/plain',
knownLength: data.length
})
.end((err, res) => {
if (err) {
throw err;
}
expect(res).to.have.status(200);
done();
})
});
}
});https://stackoverflow.com/questions/71137016
复制相似问题