2016-08-16 52 views
0

1)任何人都可以解释为什么,当调试hapi的这个茉莉花测试时,调试器从来没有在注入部分内部碰到任何断点(请参阅评论),除非稍后调用它。缺少一行尚未达到的代码如何影响调试器?为什么调试器失败并且测试通过,除非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

Read the source, Luke!茉莉花docs异步测试注:

该规范将无法启动,直到完成函数被调用在调用上面beforeEach。这个规范直到完成被调用才会完成。

所以,如果你不叫done你的套件并没有运行,它的运行和超时!