簡體   English   中英

MochaJS setTimeout ES6

[英]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是一個生成器函數。

使用方法:

  • Nodejs v4.2.1
  • Co v4.6.0
  • 應該v7.1.0
  • 摩卡v2.3.3

您不能將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM