Как получить доступ к серверу Express, запущенному через child_process из теста Jest - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть тест Jest, который попытался выполнить попытку и конечную точку, которая была запущена через child_process в функции «все-все», но он думает, что на этом порту ничего не слушается. Тест Jest также не заканчивается sh, потому что child_process игнорирует wi sh родительского Jest до конца.

Тест Jest:

const jquery = require('jquery');
const { fork } = require('child_process');

var forked = null;

beforeAll(() => {

    forked = fork('server.js', { silent: true });
    forked.stdout.on('data', function (chunk) {
        console.log("Stdout in child: " + chunk);
    });
});


test('is it ok', () => {
    jquery.ajax({
        async: false,
        type: "GET",
        url: "http://localhost:8765/is-it-ok",
        dataType: "xml",
        success: function (doc, code, response) {
            expect(response.responseText).toBe("ok");
        },
        error: function (data, textStatus, errorThrown) {
            throw new Error('server badness');
        }
    });
});

сервер. js:

const express = require('express');
var cors = require('cors');
const app = express();
app.use(cors());
const port = 8765;
var server;

app.get('/*', (req, res) => {
    res.send("ok");
});

server = app.listen(port, 'localhost', () => console.log(`Example app listening at http://localhost:${port}`));

Сервер. js прекрасно работает сам по себе, но не так, как кажется через child_process под управлением Jest. Неужели это несовместимые технологии?

Репо https://github.com/paul-hammant/wtf имеет весь проект.

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