Jestjs 为什么我会得到;测试完成后无法记录?";
编辑:底部的解决方案 这是我第一次开玩笑。我正在尝试为我的服务运行“stock”测试,即FeatherJS通过cli创建服务时为您设置的测试。该服务使用了一个带有回调的非同步函数,作为最后一步,我在控制台上做了一些日志记录。我收到错误:“测试完成后无法登录。您是否忘记在测试中等待异步?”我怀疑测试没有在退出前等待回调完成,因此当回调执行时,尝试在测试完成后登录 以下是股票测试:Jestjs 为什么我会得到;测试完成后无法记录?";,jestjs,feathersjs,Jestjs,Feathersjs,编辑:底部的解决方案 这是我第一次开玩笑。我正在尝试为我的服务运行“stock”测试,即FeatherJS通过cli创建服务时为您设置的测试。该服务使用了一个带有回调的非同步函数,作为最后一步,我在控制台上做了一些日志记录。我收到错误:“测试完成后无法登录。您是否忘记在测试中等待异步?”我怀疑测试没有在退出前等待回调完成,因此当回调执行时,尝试在测试完成后登录 以下是股票测试: it('registered the service', () => { const service
it('registered the service', () => {
const service = app.service('order');
expect(service).toBeTruthy();
});
service = null;
beforeAll(async () => {
service = await app.service('order');
});
it('registered the service', () => {
expect(service).toBeTruthy();
});
我已经尝试了文档中提到的一些技术,如async/await:
it('registered the service', async () => {
const service = await app.service('order');
expect(service).toBeTruthy();
});
我试着用“完成”:
我每次都收到相同的错误消息
以下是正在进行日志记录的服务代码部分:
amqp.connect(amqp_url, (err0, conn) => {
if(err0) {
throw(err0);
}
conn.createChannel((err1, ch) => {
if(err1) {
throw(err1);
}
ch.assertQueue(orchToOrderQName);
ch.consume(orchToOrderQName, function(msg) {
ch.ack(msg);
service.emit('create', msg);
});
orchToOrderChannel = ch;
});
conn.createChannel((err1, ch) => {
if(err1) {
throw(err1);
}
ch.assertQueue(orderToOrchQName);
orderToOrchChannel = ch;
console.log(" [*] Order is consuming messages from %s.", orchToOrderQName);
});
});
我想我需要找到一种方法让测试等待回调,但问题可能出在别处
谢谢你的帮助
编辑:我可以通过更改库存测试来解决这个问题:
it('registered the service', () => {
const service = app.service('order');
expect(service).toBeTruthy();
});
service = null;
beforeAll(async () => {
service = await app.service('order');
});
it('registered the service', () => {
expect(service).toBeTruthy();
});
我不再收到关于日志记录的错误消息。如果有更好的解决方法,请告诉我。你知道为什么这个解决方案有效吗?我觉得原来的代码不错。因为我遇到了同样的问题,无法找出问题所在。你用的是哪个版本的笑话?谢谢,我也是。我使用了其他帖子中的建议,比如在测试中将wait放在函数调用中,但我仍然收到相同的错误。添加
done()