модульное тестирование углового сервиса, использующего аутентификацию firebase? - PullRequest
1 голос
/ 19 марта 2019

Я установил простую службу аутентификации на angular, которая возвращает Promise:

import * as firebase from 'firebase/app';

@Injectable({
    providedIn: 'root'
})

export class AuthService {

  doLogin(val:{email:string, password:string}) {
  return new Promise<any>((resolve, reject) => {
    firebase
      .auth()
      .signInWithEmailAndPassword(val.email, val.password)
      .then(
        res => resolve(res),
        err => reject(err)
      );
    });
  }

}

Как правильно реализовать модульное тестирование в службе?В настоящее время я достигаю этого, выполняя модульное тестирование с использованием jasmine, предоставляя реальные учетные данные пользователя (что не очень хорошо, поскольку я собираюсь отправить код на github) и вызывая метод doLogin напрямую с использованием учетных данных.

describe('AuthService', () => {
let service: AuthService;
const userCreds = {
    email: 'somerealemail@somedomain.com',
    password: 'somerealpassword'
};

beforeEach(() => TestBed.configureTestingModule({
    imports: [FirebaseModule],
    providers: [AuthService]
}));

beforeEach(() => {
    service = TestBed.get(AuthService);
});

it('should logged in', async((done) => {
    service.doLogin(userCreds).then(
        res => {
            expect(res).toBeTruthy();
        }
    )
}));

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

1 Ответ

1 голос
/ 19 марта 2019

Я настоятельно рекомендую вам рефакторинг вашего кода для использования внедрения зависимостей. Смотри документы здесь .

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

Как только вы это сделаете, вы можете проверить это довольно простым способом. Вот пример Stackblitz тестирования службы Firebase.

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