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?
});
});
});
答案 0 :(得分:0)
Read the source, Luke!用于异步测试的Jasmine docs注意:
在上面调用beforeEach之前调用done函数之前,不会启动此规范。在完成调用之前,此规范将无法完成。
所以,如果你没有打电话给done
你的套房没有运行,不它会运行并超时!