Test angulaire 4 HTTPClienttest HTTPClient angulaire 4 "prévue undefined à définir"
Suite à cette post
Au service
getBlogs(){
return this._http.get(this.blogsURL+'blogs')
.map((result: Response) => {
this.blogs = result['blogs'];
return this.blogs;
})
}
Et le test: J'ai commencé l'injection du service et HttpTestingController dans le bloc, mais en le mettant dans le avant chaque fonctionne aussi bien.
Le problème se produit lorsque request.flush est appelé et les feux de sorte que la méthode, ils sont retournés aucun résultat
import { TestBed, inject } from '@angular/core/testing';
import { HttpClientModule } from '@angular/common/http';
import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
import { BlogsService } from './blogs.service';
import { Blog } from '../models/blog';
describe('BlogsService',() => {
let service:BlogsService;
let blogsURL:string;
let httpMock:HttpTestingController;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [BlogsService],
imports: [HttpClientTestingModule]
});
service = TestBed.get(BlogsService);
httpMock = TestBed.get(HttpTestingController);
blogsURL = 'http://localhost:3000/'
});
it('#getBlogs should return data',() => {
service
.getBlogs()
.subscribe(result => {
expect(result).toBeDefined();
expect(result.length).toBe(2);
expect(result).toEqual([
{
id: 1,
name: 'Foo',
numSales: 100
}, {
id: 2,
name: 'Bar',
numSales: 200
}
]);
});
// look up our request and access it
const request = httpMock.expectOne(blogsURL+'blogs');
// verify it is a GET
expect(request.request.method).toEqual('GET');
// Now, provide the answer to the caller above,
// flushing the data down the pipe to the caller and
// triggering the test's subscribe method
request.flush([
{
id: 1,
name: 'Foo',
numSales: 100
}, {
id: 2,
name: 'Bar',
numSales: 200
}
]);
//
// // make sure it actually got processed...
httpMock.verify();
});
});
Merci pour votre réponse, mais j'utilise HTTPClient angulaire 4 qui n'a pas besoin de le faire – Roy
bien quand j'ai vu votre 'this._http' Je pensais que vous utilisiez Service http. –