1
私はが持っているもの:エラー:Httpのプロバイダがありません!コンポーネントのカルマのテスト
@Injectable()
export class MyService {
constructor(private http: Http) {
}
someFunction() {
return this.http.get(URL)
.map((res: Response) => {
res.json();
});
}
}
MyComponent.ts:
@Component({
selector: 'app-test',
templateUrl: './test.component.html',
styleUrls: ['./test.component.scss']
})
export class MyComponent implements OnInit {
constructor(private myService: MyService) {}
}
サービスプロバイダは、HTTPに依存し、
MyService.tsをテストする必要があります
ngテストを実行すると、エラー
私は私が試したがある すべてを試してみました何describe('MyComponent',() => {
let component: MyComponent;
let fixture: ComponentFixture<MyComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
HttpModule
],
declarations: [ MyComponent],
providers: [
MockBackend,
BaseRequestOptions,
{
provide: HttpClient,
useFactory: (backendInstance: MockBackend, defaultOptions: BaseRequestOptions) => {
return new Http(backendInstance, defaultOptions);
},
deps: [MockBackend, BaseRequestOptions]
},
MyService
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
// fixture.detectChanges();
});
it('should be created',() => {
expect(component).toBeTruthy();
});
});
:
myComponentという用ませHTTPプロバイダはMyServiceでは
を作成MyComponent.spec.tsする必要があり、 表示されません!私はまた、MockBackendについて読んで、this linkが示すようにサービスでそれを作りました!それは私のために働いていない!
助けが必要ですか?
+1。ありがとうございました。なぜコンポーネントスペックで言及されていても、サービス仕様にHTTPModuleを含める必要があります。コンポーネントのサービスがコンポーネント仕様でスパイされる場合、なぜサービス仕様で明示的にインポートする必要がありますか? – zulu