除非调用done()回调,否则为什么调试器失败并且测试通过?

时间:2016-08-16 07:42:41

标签: javascript node.js debugging callback jasmine

1)任何人都可以解释为什么在调试这个hapi的jasmine测试时,调试器永远不会在注入部分内部遇到任何断点(请参阅注释),除非稍后调用done?如何缺少尚未达到的代码行会影响之前的调试器?

我知道调用done方法很重要(我已经故意注释掉了)。然而,我对后果感到惊讶。

2)忘记调用done方法的另一个不幸的副作用是测试总是通过。如果我犯了错误,而不是传递我宁愿看到它失败。有什么建议吗?

const server = require("../lib/server");
describe("Server hello", function () {
 it("returns status code 200", function (done) {
  server.inject({ method: 'GET', url: '/' }, (res) => {
   // Never reached if done uncommented - even by debugger breakpoint - why?");
   console.log("GOT " + res.payload);
   expect(res.statusCode).toBe(200);
   // done(); // Test always passes if uncommented - is there any way to force an error instead?
  });
 });
});

1 个答案:

答案 0 :(得分:0)

Read the source, Luke!用于异步测试的Jasmine docs注意:

  

在上面调用beforeEach之前调用done函数之前,不会启动此规范。在完成调用之前,此规范将无法完成。

所以,如果你没有打电话给done你的套房没有运行,它会运行并超时!