Тестирование функций AngularFireAuth с помощью jasmine

#javascript #node.js #angular #testing #jasmine

#javascript #node.js #angular #тестирование #jasmine

Вопрос:

как дела? я впервые работаю с jasmine, и я потерян. Я просто хочу протестировать свой метод AngularFireAuth.

У меня есть эта функция в моем сервисе:

 emailPasswordLoginAsPromise(login) {

    return new Promise((resolveEPL, rejectEPL) => {

      this.angularFireAuth.auth.signInWithEmailAndPassword(login.email, login.password)
        .then(credential => {
          resolveEPL(credential.user);
        }).catch(e => {
          console.error('emailPasswordLogin', e);
          rejectEPL(e);
        });
    });
  }  

и я хочу протестировать в jasmine, и у меня есть это в моем Spec.js:

Я знаю основы mocks, но я не знаю, как применить это в моем тестировании, кто-нибудь может мне помочь, пожалуйста? Я пытался найти несколько примеров, но сильно запутался.

 import { TestBed, inject } from '@angular/core/testing';
import { AuthService } from './auth.service';
import { AngularFirestore } from '@angular/fire/firestore';
import { AngularFireAuth } from '@angular/fire/auth';
import { AngularFireModule } from '@angular/fire';
import { environment } from 'src/environments/environment';
import { RouterTestingModule } from '@angular/router/testing';

fdescribe('AuthService', () => {

  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [
        AngularFireModule.initializeApp(environment.firebase),
        RouterTestingModule
      ],
      providers: [ 
        AuthService, AngularFireAuth, AngularFirestore 
      ]
    });
  });


  it('login correct', inject([AuthService], (service: AuthService) => {

    spyOn(service,'emailPasswordLoginAsPromise').and.returnValue(Promise.resolve());

    let login = {
      email: 'email@gmail.com',
      password: 'correctpassword'
    }
      expect(service.emailPasswordLoginAsPromise(login)).toEqual(jasmine.any(Promise));
  }));

  it('login incorret', inject([AuthService], (service: AuthService) => {

    spyOn(service,'emailPasswordLoginAsPromise').and.returnValue(Promise.reject());

    let login = {
      email: 'email@gmail.com',
      password: 'wrongpassword'
    }
      expect(service.emailPasswordLoginAsPromise(login)).toEqual(jasmine.any(Promise));
  }));

});