Я пытаюсь смоделировать request.js, чтобы смоделировать загрузку файла, но он всегда зависает. Я увеличил время ожидания, но оно всегда будет превышено.
Код, который я пытаюсь смоделировать, соответствует структуре request.post.form.append
. Если я помещаю данные формы вручную, это всегда дает сбой, поэтому по функциональным причинам функциональный код не может быть изменен.
Я установил свой макет require.js, чтобы он подходил только для одного варианта использования, поэтому он написан так, как он есть.
Мой макет require.js выглядит следующим образом:
const request = {
post: jest.fn(() => ({
form: jest.fn(() => ({
append: jest.fn(test => {
console.log(test)
return Promise.resolve({
status: 200,
body: { test }
})
})
}))
}))
};
module.exports = request;
Мой код шутки выглядит следующим образом:
it('should upload a file', async () => {
mocks.post.mockReturnValueOnce({
status: 200,
body: { test: 'response' }
});
const res = await dataSource.uploadFile(
{ name: 'projects', id: '123' },
null,
{
filename: 'test',
encoding: '7bit',
mimetype: 'text/plain',
createReadStream: jest.fn
},
'12345'
);
console.log('RES', res); // never gets here
expect(mocks.post).toBeCalledWith('testName/123/files', {
filename: 'test',
encoding: '7bit',
mimetype: 'text/plain',
createReadStream: jest.fn
});
expect(res).toMatchSnapshot();
});
Применимый тестовый возврат выглядит следующим образом:
console.log folder/folderName/src/files/__mocks__/request.js:5
file
console.log folder/folderName/src/files/__mocks__/request.js:5
file
FAIL folder/folderName/src/files/__tests__/upload.spec.js (12.673s)
uploadFile
✕ should upload a file (5006ms)
● FilesAPI › uploadFile › should upload a file
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error:
Я заметил, что в моем запросе дважды регистрируется test
, поэтому я предполагаю, что он ожидает, чтобы что-то еще вернулось. Чего мне не хватает?
Код, который он запускает, отлично подходит для реальных загрузок, я просто пытаюсь написать для него модульный тест.