我正在使用socket.io IRC,我不希望用戶有長用戶名。我寫了下面(摩卡)測試,以驗證提供了較長的用戶名時,服務器不會發送到每一個連接插座的響應:如果服務器響應給出瞭如何失敗測試?
it("should not accept usernames longer than 15 chars", function (done) {
var username = "a".repeat(server.getMaxUsernameLength() + 1);
client1.emit("username change", username);
client2.on("chat message", function (data) {
throw Error("Fail, server did send a response.");
});
setTimeout(function() {
done();
}, 50);
});
這個目前的工作,但它最佳的遠。如果我的CI平臺速度較慢或者服務器在超過50 ms後做出響應會怎麼樣?在給出響應時,通過測試失敗的最佳方式是什麼?還是應該以不同的方式構建我的測試?
謝謝!
P.s.這個問題與Testing asynchronous function with mocha不同,因爲雖然問題確實與異步測試有關,但我知道done()方法(我明顯使用它)。
所以你想在測試失敗的時候完全失敗? – Iceman
[用mocha測試異步函數]可能的副本(http://stackoverflow.com/questions/12159846/testing-asynchronous-function-with-mocha) – rpadovani
我想在服務器確認用戶名併發送它時測試失敗到所有連接的客戶端(「用戶X更名爲用戶Z」)。 –