0
我正在尝试测试事件筛选器,但是存在一个我不确定如何解决的计时问题。除了在setTimeout
中包装REST请求之外,我怎么能得到这个工作?如何知道羽毛客户端何时连接到服务
const app = require('../../src/app');
const feathers = require('feathers/client')
const socketio = require('feathers-socketio/client');
const hooks = require('feathers-hooks');
const io = require('socket.io-client');
const rp = require('request-promise');
const service = app.service('users');
let server = null;
describe('\'users\' service',() => {
beforeEach((done) => {
server = app.listen('3030');
server.once('listening', done);
});
afterEach((done) => {
server.close(done);
});
it('returns stuff #test', (done) => {
const socket = io('http://localhost:3030');
const app = feathers()
.configure(hooks())
.configure(socketio(socket));
const messageService = app.service('users');
messageService.on('created', message => {
console.log('Created a message', message);
done();
});
socket.on('connection',() => {
//
// The messageService is not connected yet
// so messages.filters.js will not fire
//
// Giving it a chance to connect with setTimeout does work...
// setTimeout(() => {
rp({
method: 'POST',
url: 'http://localhost:3030/users',
body: {
test: 'Message from REST'
},
json: true
});
// }, 500);
});
});
});
我曾尝试更换socket.on
这些还有:
messageService.on('connection'
service.on('connection'
(基于Node.js的EventEmitter)- 等等...
编辑
我自那时以来发现service.on('newListener'
工作,但它被触发很多次。我需要追踪单个连接:
const messageService = app.service('users');
messageService.on('created', message => {
console.log('Created a message', message);
done();
});