안녕하세요 저는 Angular2에서 구성 요소를 테스트하려고하는데 내 서비스를 모의하려고 할 때 문제가 발생했습니다. 현재 Angular2 문서를 테스트 중입니다.Angular2 테스트 구성 요소
저는 JWT 토큰을 가지고있는 한 정상적으로 작동하는 각도 서비스에서 작성한 백엔드 API를 호출합니다. 하지만 테스트 할 때는 컴포넌트 테스트에서 서비스를 조롱하고 싶습니다.
서비스
@Injectable()
export class ItemService {
constructor(private _http: AuthHttp, private _store: Store<AppStore>) {}
items(): Observable<any[]> {
return this._http.get(ENDPOINT_ITEMS, {withCredentials: false})
.map((response: Response) => response.json().data);
}
}
구성 요소
@Component({
selector: 'items',
template: require('./items.component.html'),
providers: [ItemService]
})
export class ItemsComponent {
items: Observable<Array<Object>>;
constructor(private _service: ItemService) {}
ngOnInit(): any {
this.items = this._service.items();
}
}
구성 요소 테스트
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ ItemsComponent ],
providers: [
{ provide: ItemService, useValue: itemsMock },
]
});
fixture = TestBed.createComponent(ItemsComponent);
itemService = fixture.debugElement.injector.get(ItemService)
나는 나를 이렇게 나는 것을 테스트 할 수 있습니다 내 조롱 ItemService에서, useValue, itemsMock을 반환하고자하는 내 HTML 태그에 올바른 데이터가 있습니다. 내 서비스가 조롱 받고있는 것처럼 보이지 않습니까?
이 오류를 얻기 :
Error: Error in ./ItemsComponent class ItemsComponent_Host - inline template:0:0 caused by: No provider for AuthHttp! in karma.entry.js (line 17341)
정말 고마워요! 한 걸음 더 나아가 리팩토링하는 시간입니다! – mertje