簡體   English   中英

我如何檢查(斷言)Ember Promise是否已解決?

[英]How do I check (assert) if an Ember Promise is settled?

由於我正在測試一種服務方法,因此我返回了一個Ember Promise。 我正在使用Ember 2.16和qunit。

let promise = service.myFunctionBeingTested();
promise.then((resolveParam) => {
    assert.equal(resolveParam, EXPECTED_VAL);
}).catch(() => {
    assert.notOk("Promise rejected");
}

// Code here is supposed to trigger resolution of promise...

// Code here to make sure the promise is resolved and assert is run

我可以使用什么(應在應許解決后)來確保解決應許和assert.equal(resolveParam, EXPECTED_VAL); 運行?

看起來應該很容易檢查到諾言是否已兌現,但是Ember關於rsvp諾言的文檔太難導航或缺少a我可以使用assert.expect(/* COUNT */)但是將來的用戶將不得不每次添加要避免的新斷言時更新此數字。

在測試開始時,使用assert.expect(1)告訴測試您期望精確的1個斷言。 那你應該很好。 如果諾言失敗,您的notOk將被調用,測試將失敗。 如果諾言得以解決,則測試將通過。

如果這不是驗收測試,則可能需要:

import wait from 'ember-test-helpers/wait'

然后從測試中返回wait調用,以確保測試在確認是否有正確的斷言數量之前等待了您的諾言:

 return wait()

UPDATE

沒有assert.expect的另一種方法是在像這樣聲明一個變量:

let successCalled = false

然后在成功塊中

promise.then((resolveParam) => {
    successCalled = true
})

然后,執行以下操作:

return wait().then(() => {
     assert.ok(successCalled)
})

雖然, assert.expect為此目的存在,所以我建議使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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