Как я могу проверить (подтвердить), выполнено ли Ember Promise? - PullRequest
0 голосов
/ 02 июня 2018

У меня есть 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 слишком сложна для навигации или отсутствует ? Я мог бы использовать assert.expect(/* COUNT */), но тогдабудущие пользователи должны будут обновлять этот номер каждый раз, когда добавляются новые утверждения, которых я хочу избежать.

1 Ответ

0 голосов
/ 02 июня 2018

В начале вашего теста используйте assert.expect(1), чтобы сообщить тесту, что вы ожидаете ровно 1 утверждение.Тогда тебе должно быть хорошо.Если обещание не выполнено, вам будет вызван ваш notOk и тест не пройден.Если обещание выполнено, тест будет пройден.

Если это не приемочный тест, вам может потребоваться:

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

, а затем вернуть вызов ожидания из вашего теста, чтобы убедиться, чтоtest ждет вашего обещания, прежде чем проверять, правильно ли получено количество утверждений:

 return wait()

UPDATE

Другой способ сделать это без assert.expect - это объявить переменную перед тем, как:

let successCalled = false

Затем в блоке успеха

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

Затем после выполните:

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

Хотя для этой цели существует assert.expect, поэтому я рекомендуюиспользуя его.

...