почему выполняется раньше, чем супер-запрос на секвелирование? - PullRequest
0 голосов
/ 24 января 2020
const request = require('supertest');
const app = require('../app');

    request(app)
        .get("/videos")
        .expect(200)
        .end(async (err,res) => {
            if (err) {
                console.error(err);
                done();
            } else {
                console.log(res.body);
                done(); // <- this is the question line
            }

Если я снимаю готовое с кода, тест напечатает результат, но если у меня есть done, продолжится печать по-прежнему, но на консоли нет печати res.body.

Кто-нибудь знает почему?

Ответы [ 2 ]

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

Попробуйте удалить async из строки .end(async (err,res) => {, чтобы обратный вызов больше не считался асинхронным.

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

Я думаю, это из-за асинхронного характера javascript.

По умолчанию тесты Jest завершаются, как только они достигают конца своего выполнения. Это означает, что этот тест не будет работать должным образом:

const request = require('supertest');
const app = require('../app');

    request(app)
        .get("/videos")
        .expect(200)
        .end(async (err,res) => {
            if (err) {
                console.error(err);
                // done();
            } else {
                console.log(res.body);
                // done();
            }

Проблема в том, что тест завершится, как только функция завершится асинхронно. *

const request = require('supertest');
const app = require('../app');

    request(app)
        .get("/videos")
        .expect(200)
        .end(async (err,res) => {
            if (err) {
                console.error(err);
                done();
            } else {
                console.log(res.body);
                done();
            }

И затем, в этом случае, он ожидает выполнения функции готовности перед завершением теста.

Для получения дополнительной информации. Пожалуйста, отметьте здесь .

Надеюсь, это поможет. Спасибо

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