2016-08-16 47 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你的套件並沒有運行,它的運行和超時!