2015-12-02 31 views
5

Qualcuno sa come eseguire un test dell'unità di base utilizzando l'angolo 2 per testare un elemento di base base di elementi di base.Test unitari per l'aggiunta di Firebase utilizzando angolare 2

sto usando dattiloscritto invece di JavaScript di base per il mio codice

Questo è quello che sto testando:

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,()=>{ 

     }); 
    } 
} 

Questo è il mio test in corso:

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(); 
    }) 

}); 

Questo è l'errore che ottengo quando eseguo quel test:

enter image description here

+0

Sembra un problema di configurazione – AngularM

risposta

2

Tre passi per iniziare il test.

  1. Setup your testing environment. I documenti Angular 2 hanno un'ottima guida per farlo.
  2. Scrivi il tuo codice.
  3. Scrivi il test.

Diciamo che si crea una classe denominata 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); 
    } 
} 

Per provarlo, è possibile importare DataService e utilizzare metodi di Jasmine per verificare che il metodo add.

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(); 
    }) 

}); 

La chiave per testare i metodi Firebase è solo per spiarli. Non è necessario testare che Firebase funzioni, solo che il tuo codice chiama Firebase correttamente.

Il problema è che si sta utilizzando l'SDK Firebase completo nei test dell'unità. Idealmente, vorrai utilizzare una libreria fittizia, in modo da poter creare una simulazione per qualsiasi funzionalità tu abbia bisogno dall'SDK di Firebase.

+0

Ciao David, ho aggiunto il mio codice sopra ad esempio il mio test e il codice che sto testando. Mi sembra di avere un problema di installazione. – AngularM

+0

Sembra che tu non includa tutti i file. Questa domanda però non riguarda l'installazione. Cerchiamo di evitare di trasformare una domanda in più. Se hai un'altra domanda, risolvila e inizia un'altra. –

+0

OK nessun problema. Creerò un'altra domanda ora. Questo è il link alla prossima domanda: http://stackoverflow.com/questions/34047379/unit-tests-for-firebase-files-non-incluso-issue – AngularM