заглушка жасмина, чтобы бросить объект вместо строки - PullRequest
0 голосов
/ 15 января 2020

Я тестирую компонент на Angular. Здесь я вызываю функцию из внешнего сервиса и искусственно генерирую ошибку, чтобы проверить, как компонент обрабатывает ошибку.

Для этого мне нужно, чтобы моя ошибка была примерно такой { statusCode: 401, code: 'LOGIN_FAILED' }

Однако метод Jasmine throwError выбрасывает только одну строку, переданную в качестве аргумента. Есть ли обходной путь или метод, который я не знаю, чтобы я мог выбросить объект?

Вот мой код:

fit('should display error message if login failure', () => {
    // should throw ({ statusCode: 401, code: 'LOGIN_FAILED' });
    const spyLogin = spyOn(appUserApi, 'loginUser').and.throwError('test');  
    fillForm('toto@gmail.com', '1234');
    submitForm();
    // expect stuff here
  });

1 Ответ

0 голосов
/ 16 января 2020

Я нашел решение: используйте returnValue () вместо throwError () из заглушки. Затем в возвращаемом значении вы можете бросить все, что хотите, используя rx js throwError ()

spyOn(appUserApi, 'loginDoctor')
      .and
      .returnValue(
        throwError({ statusCode: 401, code: 'LOGIN_FAILED' })
      );

Важное примечание : здесь throwError () происходит от rx js, а не от шпионки Жасмин!

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