Node.js '的目的/性质是什么;完成();在超级测试中?

Node.js '的目的/性质是什么;完成();在超级测试中?,node.js,supertest,Node.js,Supertest,在(非常有限的)中,有一些代码示例,其中传递了名为done()的回调函数: description('GET/user',function(){ 它('用json响应',函数(完成){ 请求(应用程序) .get(“/user”) .set('Accept','application/json') .expect('Content-Type',/json/) .预计(200,完成); }); }); 此done()回调的目的/性质是什么?您的请求是异步的 这意味着,除非您能够等待它,否则从第2

在(非常有限的)中,有一些代码示例,其中传递了名为
done()
的回调函数:

description('GET/user',function(){
它('用json响应',函数(完成){
请求(应用程序)
.get(“/user”)
.set('Accept','application/json')
.expect('Content-Type',/json/)
.预计(200,完成);
});
});

done()
回调的目的/性质是什么?

您的请求是异步的

这意味着,除非您能够等待它,否则从第2行开始的函数将立即退出。然后,Mocha将继续进行其他测试,然后突然,请求承诺将实现并完成任务,而Mocha甚至不再查看您的“用json响应”规范

您试图实现的行为是执行请求,等待响应,然后测试它是否为200

有3种等待响应的方法:

  • 完成
  • 通过将done放入函数(done)调用中,测试框架知道应该等到调用done之后才能完成测试

  • 返回
  • 正如您在自述文件()中看到的,还可以选择返回它:

    description('GET/user',function(){
    它('用json响应',函数(){
    退货申请(app)
    .get(“/user”)
    .set('Accept','application/json')
    .expect('Content-Type',/json/)
    .预期(200);
    });
    });
    
    因为摩卡将等待所有的承诺

  • 异步的
  • description('GET/user',function(){
    它('用json响应',异步函数(){
    等待请求(应用程序)
    .get(“/user”)
    .set('Accept','application/json')
    .expect('Content-Type',/json/)
    .预期(200);
    });
    });
    
    您的请求是异步的

    这意味着,除非您能够等待它,否则从第2行开始的函数将立即退出。然后,Mocha将继续进行其他测试,然后突然,请求承诺将实现并完成任务,而Mocha甚至不再查看您的“用json响应”规范

    您试图实现的行为是执行请求,等待响应,然后测试它是否为200

    有3种等待响应的方法:

  • 完成
  • 通过将done放入函数(done)调用中,测试框架知道应该等到调用done之后才能完成测试

  • 返回
  • 正如您在自述文件()中看到的,还可以选择返回它:

    description('GET/user',function(){
    它('用json响应',函数(){
    退货申请(app)
    .get(“/user”)
    .set('Accept','application/json')
    .expect('Content-Type',/json/)
    .预期(200);
    });
    });
    
    因为摩卡将等待所有的承诺

  • 异步的
  • description('GET/user',function(){
    它('用json响应',异步函数(){
    等待请求(应用程序)
    .get(“/user”)
    .set('Accept','application/json')
    .expect('Content-Type',/json/)
    .预期(200);
    });
    });
    
    这是否意味着
    done
    是一个Mocha/Jest功能而不是超级测试功能?另外,在您的最后两个代码示例中:
    done
    是否应该在这些代码中省略?您完全正确!done是一个mocha特性,在其他两个示例中应该省略done。更新了答案这是否意味着
    done
    是一个Mocha/Jest功能,而不是超级测试功能?另外,在您的最后两个代码示例中:
    done
    是否应该在这些代码中省略?您完全正确!done是一个mocha特性,在其他两个示例中应该省略done。更新了答案