Mocha - множественные асинхронные вызовы c внутри одного теста приводят к ошибке тайм-аута - PullRequest
0 голосов
/ 31 января 2020

Итак, у меня есть nodeJS бэкэнд, и я пытаюсь добавить интеграционные тесты.

Проблема в том, что он всегда превышает время ожидания 2 секунды. Документация Mocha говорит мне вызвать "done ()" при обратном вызове обещания или вернуть обещание.

Я не могу использовать оба, потому что это выдаст другую ошибку. У меня есть несколько асин c вызовов в одном тесте, поэтому я не знаю, куда звонить done ().

Ручная установка времени ожидания не подходит для меня, мне это не нравится и это не элегантное решение.

it('should return a working presigned upload URL', async () => {
    let objectFromS3;        

    // get the presigned url, try if we can upload to S3 using this url
    const uploadUrl = await module.getPresignedUploadUrl();

    // upload a sample file using the uploadUrl
    await axios.put(uploadUrl, sampleVideoFile);

    // Directly get the object from S3 to check if its really uploaded there
    // s3Params contains the Bucket and Key(file name)
    objectFromS3 = await s3.getObject(s3Params).promise();

    expect(objectFromS3).to.not.undefined;

    // Delete the uploaded object (I can put this inside afterEach)
    await s3.deleteObject(s3Params).promise();
})

Как вы можете видеть, у меня есть несколько асин c вызовов в одном тесте, поэтому я не знаю, какое обещание вернуть или в каком месте использовать done () ;

Я попытался передать done в параметре и использовал done() в последней строке, и это привело к:

Error: Resolution method is overspecified. Specify a callback *or* return a Promise; not both.

1 Ответ

0 голосов
/ 31 января 2020

Мокко может быть конечным, но вы пытались вызвать done () в конце вашего теста.

вам нужно будет передать done в качестве параметра, а именно asyn c function (done) {some код}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...