Тест Карма / Жасмин Ошибка обещания внутри обычной функции - PullRequest
0 голосов
/ 30 мая 2018

Сначала мои настройки.Я пытаюсь протестировать некоторые из моих ионных страниц и т. Д. И у меня есть страница входа, где я хочу проверить вход.

Это мой метод входа:

doLogin() {
    let authHelper = this.injector.get(AuthHelper);
    authHelper.sendSignInLink(this.email).then(()=> {
     window.localStorage.setItem("userMail", this.email);
     let loginToast = this.toast.create({
       message: "Link to email succesfully send. In order to finish the login, it is necessary to click the send link.",
       duration: 3000,
       position: "bottom",
     });
     loginToast.present();
    }).catch(() => {
  throw new EmailSignInLinkError("invalid Mail");
  });
}

Как мы видимметод sendSignInLink возвращает обещание, и если обещание отклонено, оно должно выдать пользовательскую ошибку.

Для моего модульного теста я высмеял authHelperClass на очень простой макет:

export class AuthHelperMock {

public auth(): Promise<any> {
    return new Promise((resolve, reject) => {
        resolve(2);
    });
}

public sendSignInLink(email: String): Promise<any> {
    return new Promise((resolve, reject) => {
        if (email != undefined || email != "")
            resolve(1);
        else
            reject("Invalid email");
    });
 }
}

Сейчаспроблема, которую я пытаюсь проверить на этой сгенерированной ошибке из моего обещания.

Мой вариант:

    it('should not do the login', () => {
      component.email = "";
      expect(() => {
        component.doLogin();
    }).toThrowError(EmailSignInLinkError)

Я знаю, что это не сработает, потому что обещание асинхронное иcase потерпит неудачу прежде, чем выдаст ошибку.Но я не нашел подходящего решения, кроме как изменить свой doLogin на обещание.

Как я могу проверить это обещание в рамках обычной функции?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...