У меня есть тест 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 имеет весь проект.