这是我第一次尝试开玩笑。我正在尝试为我的服务运行“stock”测试,即,feathersjs 在通过 cli 创建服务时为您设置的测试。该服务使用带有回调的异步函数,作为最后一步,我在控制台中进行了一些日志记录。我收到错误:“测试完成后无法记录。您是否忘记在测试中等待某些异步内容?” 我怀疑测试在退出之前不会等待回调完成,因此当回调执行时会在测试完成后尝试记录。
这是库存测试:
it('registered the service', () => {
const service = app.service('order');
expect(service).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)
我尝试了文档中提到的一些技术,例如 async/await:
it('registered the service', async () => {
const service = await app.service('order');
expect(service).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)
我尝试使用“完成”:每次我都会收到相同的错误消息。
这是执行日志记录的服务代码部分:
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);
});
});
Run Code Online (Sandbox Code Playgroud)
我想我需要找到一种方法让测试等待回调,但也许问题出在其他地方。
我可以通过更改库存测试来解决这个问题:
service = null;
beforeAll(async () => {
service = await app.service('order');
});
it('registered the service', () => {
expect(service).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)
我不再收到有关日志记录的错误消息。
此答案作为对问题的编辑发布,为什么我收到“测试完成后无法登录?” 由 OP boing根据 CC BY-SA 4.0 进行。
| 归档时间: |
|
| 查看次数: |
12486 次 |
| 最近记录: |