Я устанавливаю набор тестов, используя jest для приложения node / socket.io.
Когда я проверяю связь сервера -> клиента, все работает как положено.
Когда я проверяю связь клиента -> сервера, мой набор тестов проходит с ложным срабатыванием:
Это тест, который дает ложный положительный результат:
test('should communicate with waiting for socket.io handshakes', (done) => {
client.emit('example', 'some message');
setTimeout(() => {
server.on('example', (message) => {
expect(message).toBe('some message')
})
done();
}, 50);
});
Это весь мой набор тестов:
import io from 'socket.io-client';
import * as http from 'http';
import ioBack from 'socket.io';
let client;
let httpServer;
let httpServerAddr;
let server;
/**
* Setup WS & HTTP servers
*/
beforeAll((done) => {
httpServer = http.createServer().listen();
httpServerAddr = httpServer.address();
server = ioBack(httpServer);
done();
});
/**
* Cleanup WS & HTTP servers
*/
afterAll((done) => {
server.close();
httpServer.close();
done();
});
/**
* Run before each test
*/
beforeEach((done) => {
// Setup
// Do not hardcode server port and address, square brackets are used for IPv6
client = io.connect(`http://[${httpServerAddr.address}]:${httpServerAddr.port}`, {
'reconnection delay': 0,
'reopen delay': 0,
'force new connection': true,
transports: ['websocket'],
});
client.on('connect', () => {
done();
});
});
/**
* Run after each test
*/
afterEach((done) => {
// Cleanup
if (client.connected) {
client.disconnect();
}
done();
});
describe('basic socket.io example', () => {
test('should communicate', (done) => {
// once connected, emit Hello World
server.emit('echo', 'Hello World');
client.on('echo', (message) => {
// Check that the message matches
expect(message).toBe('Hello World');
done();
});
server.on('connection', (mySocket) => {
expect(mySocket).toBeDefined();
});
});
test('should communicate with waiting for socket.io handshakes', (done) => {
client.emit('example', 'some message');
setTimeout(() => {
server.on('example', (message) => {
expect(message).toBe('some incorrect message')
})
done();
}, 50);
});
});
Я не уверен, почему я получаю ложный положительный результат.