javascript - Enhetstester för firebase-lägg till med angular 2


Vet någon hur man gör ett grundläggande enhetstest med Angular 2 för att testa ett grundläggande Firebase-lägg till objekt.

Jag använder TypeScript istället för grundläggande JavaScript för min kod

Det här är vad jag testar:

 export class AppComponent {
     ref: Firebase;
     refUsers: Firebase;
     refProfiles: Firebase;

     constructor(){
         this.ref = new Firebase("https://markng2.firebaseio.com");
         this.refUsers = new Firebase("https://markng2.firebaseio.com/users");
         this.refProfiles = new Firebase("https://markng2.firebaseio.com/profiles");    
     }

     public addUser(newUser: Object): void{     
         this.refUsers.push(newUser, ()=>{

         });
     }
 }

Detta är mitt nuvarande test:

 import {it, iit, describe, expect, inject, injectAsync, beforeEachProviders, fakeAsync, tick } from 'angular2/testing';
 import { AppComponent } from '../app/app';

 describe('AppComponent', () => {

     it('saves an item to Firebase', () => {
         let refUsers = new Firebase('');

         let service = new AppComponent();

         spyOn(service.refUsers, 'push');
         service.addUser({ item: true });

         expect(service.refUsers.push).toHaveBeenCalled();
     })

 });

Det här är felet jag får när jag kör det testet:

Svar #1

Tre steg för att börja testa.

  1. Ställ in din testmiljö. Angular 2-dokumentationen har en bra guide om hur man gör det.
  2. Skriv din kod.
  3. Skriv testet.

Låt oss säga att du skapar en klass som heter DataService:

/// <reference path="typings/firebase/firebase.d.ts" />

export class DataService {
    ref: Firebase;
    constructor(theRef: Firebase) {
        this.ref = theRef;
    }
    add(object: any) {
        this.ref.push(object);
    }
}

För att testa det kan du importera DataService och använda Jasmine-metoder för att testa add-metoden.

import {DataService} from './data-service';

describe('DataService', () => {

    it('saves an item to Firebase', () => {
        let ref = new Firebase('');
        let service = new DataService(ref);
        // create a spy to use if push is called
        spyOn(service.ref, 'push');
        service.add({ item: true });
        // expect that push was called
        expect(service.ref.push).toHaveBeenCalled();
    })

});

Nyckeln till att testa Firebase-metoder är bara att spionera på dem. Du behöver inte testa att Firebase fungerar, bara att din kod anropar Firebase på rätt sätt.

Problemet här är att du använder hela Firebase SDK i dina enhetstester. Helst skulle du vilja använda ett mockat bibliotek, så att du kan skapa en mock för vilken funktionalitet du än behöver från Firebase SDK.

Relaterade artiklar