Jestjs 为什么我会得到;测试完成后无法记录?";

Jestjs 为什么我会得到;测试完成后无法记录?";,jestjs,feathersjs,Jestjs,Feathersjs,编辑:底部的解决方案 这是我第一次开玩笑。我正在尝试为我的服务运行“stock”测试,即FeatherJS通过cli创建服务时为您设置的测试。该服务使用了一个带有回调的非同步函数,作为最后一步,我在控制台上做了一些日志记录。我收到错误:“测试完成后无法登录。您是否忘记在测试中等待异步?”我怀疑测试没有在退出前等待回调完成,因此当回调执行时,尝试在测试完成后登录 以下是股票测试: it('registered the service', () => { const service

编辑:底部的解决方案

这是我第一次开玩笑。我正在尝试为我的服务运行“stock”测试,即FeatherJS通过cli创建服务时为您设置的测试。该服务使用了一个带有回调的非同步函数,作为最后一步,我在控制台上做了一些日志记录。我收到错误:“测试完成后无法登录。您是否忘记在测试中等待异步?”我怀疑测试没有在退出前等待回调完成,因此当回调执行时,尝试在测试完成后登录

以下是股票测试:

  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()