[英]MochaJS setTimeout ES6
在對Node.js應用程序進行單元測試時,在使用setTimeout
遇到了Mocha和ES6問題。
Mocha說測試通過了,但是當我放入其他東西(檢查測試,以確保它可以工作)時,它仍然說測試通過了,但是應該失敗了。
碼:
describe('.checkToken', function () {
let user = {};
let token = repository.newToken();
it('token has expired', co.wrap(function* () {
setTimeout(function* () {
let result = yield repository.checkToken(user, token.token);
result.body.should.have.property("error");
}, 1000)
}));
});
});
其他測試全部正常,在這種情況下沒有問題。
我已經在setTimeout
的回調中嘗試了箭頭功能或標准功能,但隨后崩潰了。 (Unexpected token)
checkToken
是一個生成器函數。
使用方法:
您不能將setTimeout
與生成器一起使用。 傳遞給co.wrap
的生成器將異步運行,並且它需要知道超時。 您將需要yield
超時(作為可 yield
的東西,例如重擊或應許):
it('token has expired', co.wrap(function* () {
yield new Promise(resolve => { setTimeout(resolve, 1000); });
let result = yield repository.checkToken(user, token.token);
result.body.should.have.property("error");
}));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.