IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Angular Discussion :

Test unitaire mock service


Sujet :

Angular

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut Test unitaire mock service
    Bonjour,

    J'ai le tests unitaire suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    describe('UserService', () => {
      let service: UserService;
      let envServiceSpy: SpyObj<EnvService>;
      let userApiService: SpyObj<UserApiService>;
      let usersMock = [
        {id: 1, name: 'Walter White', bestQuote: 'I am the one who knocks.'},
        {id: 2, name: 'Jesse Pinkman', bestQuote: 'Yeah, bitch! MAGNETS!'},
      ];
      let envMock = {
        apiUrl: 'http://example.com',
      };
     
      beforeEach(() => {
        // It is a good idea to re-initiate the spy instance after each run so you do not face any weird side-effects.
        // That way you also do not need to call `mySpy = TestBed.inject(MyService);`
        envServiceSpy = createSpyObj('EnvService', ['load']);
        envServiceSpy.load.and.returnValue(of(envMock))
     
        userApiService = createSpyObj('UserApiService', ['getUsers'], ['rootUrl']);
        userApiService.getUsers.and.returnValue(of(usersMock));
     
        TestBed.configureTestingModule({
          providers: [
            UserService,
            {provide: EnvService, useValue: envServiceSpy},
            {provide: UserApiService, useValue: userApiService},
          ],
        });
     
        service = TestBed.inject(UserService);
      });
     
      it('should be created', () => {
        expect(service).toBeTruthy();
      });
     
      it('should set rootUrl for userApiService on init', () => {
        // Considering the `constructor()` did run already due to our initialization in `beforeEach()`
        // we can just assert on our expectations
        expect(envServiceSpy.load).toHaveBeenCalled();
        expect(userApiService.rootUrl).toEqual('http://example.com');
      });
     
      // Here we test, that the `getUserList()` method in fact mapped
      // the (mocked) response from `getUsers()` properly
      it('should retrieve user list ', (done) => {
        service.getUserList().subscribe((userList) => {
          expect(userList).toEqual(usersMock);
          expect(userApiService.getUsers).toHaveBeenCalled();
          done();
        }, done.fail);
      });
    });
    Mais celui retourne l'erreur suivante :
    Test should set rootUrl for userApiService on init' :
    Error: Expected spy EnvService.load to have been called.,
    Error: Expected undefined to equal 'api'.

    Test should return value from observable :
    service.getUserList() is not a function

    Voici mon service à tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    export class UserService {
      private env: EnvConfiguration;
     
      constructor(private userApiService: UserApiService, private envService: EnvService) {
        this.envService.load().subscribe(env => {
          this.env = env;
        });
     
        this.userApiService.rootUrl = this.env.apiUrl;
      }
     
      getUserList(): Observable<User[]> {
        return this.userApiService.getUsers().pipe(
          map(result => result),
          catchError(err => { return throwError(err);
          })
        );
      }
    }
    Je vois pas ou est le problème

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    J'ai réoslu mon problème en enlevant le RootUrl du mock

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 15/10/2019, 01h44
  2. NodeJS Test unitaire Mock de fonction non exporté
    Par sebxid dans le forum NodeJS
    Réponses: 1
    Dernier message: 13/08/2018, 22h20
  3. [EasyMock] utilisation des mock dans les test unitaires.
    Par jeremieG dans le forum Tests et Performance
    Réponses: 7
    Dernier message: 16/07/2010, 17h10
  4. Test unitaire avec rhino mock pour les clients proxy
    Par trihanhcie dans le forum ASP.NET
    Réponses: 0
    Dernier message: 28/03/2010, 00h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo