TestBed.overrideProvider (не переопределяет службу, т.к. - PullRequest
0 голосов
/ 30 октября 2019

Я пытался переопределить службу через BeforeEach, и это не влияет на effect.ts, который имеет условие, если электронная почта подтверждена или нет. Но это работает, когда подписка

authService.currentUser.subscribe(user => (user.emailVerified = false));

это тестовый код

class MockAuthService {
  currentUser = of(fromSeeds.userAuth);
}
describe('AuthEffects', () => {
  ...
  let authService: AuthService;

beforeEach(async () => {
   TestBed.configureTestingModule({
   ......,
  { provide: AuthService,  useClass: MockAuthService },
  ...
  })
})

 describe('listen$', () => {
    beforeEach(async () => {
       TestBed.overrideProvider(authService.currentUser, {
         useValue: of({ ...fromSeeds.userAuth, emailVerified: false })
       });
    });
    it('should', () => {
     // test here
    })
  });

есть другая информация, которую я использую этот spyOn, он обновляет электронную почту currentUser, подтвержденную как ложную, но после прохождения условия (если проверено= верно) в действительности.

spyOn(authService.currentUser, 'pipe').and.returnValue(
    of({ ...fromSeeds.userAuth, emailVerified: false })
);
...