2016-04-29 8 views
0

Ist es möglich, Einheit http.get Anrufe mit tatsächlichen Antwort und nicht durch Spott die Antwort?Unit Tests http.get Anruf mit dynamischen Antwort in Winkel

... 
export class CarService{ 
    ... 
    getCars():Observable<any>{ 
     return this.http.get("http://someurl/cars").map(res => res.json()); 
    } 
    ... 
} 

Unit-Test:

it('retrieves all the cars', injectAsync([CarService], (carService) => { 
    return carService.getCars().toPromise().then((result) => {   
    expect(result.length).toBeGreaterThan(0); 
    });  
})); 

Es wird den http.get Anruf ausführen und es wird für einige Sekunden anhalten und dann wird es die folgenden Fehler zurück:

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

Antwort

0

Es funktioniert unter Schnipsel in dem beforeEachProviders durch Zugabe -

beforeEachProviders(() => { 
    window.jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; 
    setTimeout(function() { 
     console.log('inside timeout'); 
    }, 500); 

dies wird die Auszeit Fehler entfernen und Sie das tatsächliche dynamische Verhalten von API kommenden testen können.

0

Abhängigkeiten in einer Einheit Test sollte verspottet werden. Unit-Tests, wie der Name vorschlägt, sollten die Unit und nicht ihre Abhängigkeiten testen.