[英]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.