angular - Hvordan tester jeg om en boolsk verdi har endret seg?


Jeg har en funksjon i ts-filen min som endrer verdien til en boolean, men som ikke returnerer en verdi. Jeg klarer ikke å finne ut hvordan jeg tester denne funksjonen i spec.ts-filen.

Dette er funksjonen i ts-filen:

doesUserExist(username: string) {
  this.data.getUser(username).subscribe(data => {
    this.searchedUserExists = true;
  }, err => {
    this.searchedUserExists = false;
  });
}

Dette er hva jeg har prøvd i spec.ts-filen:

it('testIfUserExistsIsFalse', () => {
  let searchedUserExists: boolean;
  service.doesUserExist('falsegithubusername123');
  expect(searchedUserExists).toBeFalsy();
});

Svar #1

Du kan få tilgang til tjenestens egenskaper direkte hvis de ikke er private

it('testIfUserExistsIsFalse', () => {
  service.doesUserExist('falsegithubusername123');
  expect(service.searchedUserExists).toBeFalsy();
});

Men egentlig bør du gjøre som @auburg kommenterte og endre funksjonen til å returnere en boolsk verdi, så kan du teste slik:

it('testIfUserExistsIsFalse', () => {
  expect(service.doesUserExist('falsegithubusername123')).toBeFalsy();
});

Svar #2

Hvis this.searchedUserExists er en offentlig variabel, sjekk den direkte.

expect(service.searchedUserExists).toBeFalsy();