Lần này tôi đang cố gắng thử một dịch vụ (gọi http) để kiểm tra một thành phần.Dịch vụ mô phỏng trong một thành phần - mô hình bị bỏ qua
@Component({
selector: 'ub-funding-plan',
templateUrl: './funding-plan.component.html',
styleUrls: ['./funding-plan.component.css'],
providers: [FundingPlanService]
})
export class FundingPlanComponent implements OnInit {
constructor(private fundingPlanService: FundingPlanService) {
}
ngOnInit() {
this.reloadFundingPlans();
}
reloadFundingPlans() {
this.fundingPlanService.getFundingPlans().subscribe((fundingPlans: FundingPlan[]) => {
this.fundingPlans = fundingPlans;
}, (error) => {
console.log(error);
});
}
}
documentation (phiên bản 2.0.0) giải thích rằng bạn nên thử dịch vụ. Sử dụng cùng một cấu hình TestBed
:
describe('Component: FundingPlan',() => {
class FundingPlanServiceMock {
getFundingPlans(): Observable<FundingPlan> { return Observable.of(testFundingPlans) }
}
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [FundingPlanComponent],
providers: [
{ provide: FundingPlanService, useClass: FundingPlanServiceMock },
]
});
fixture = TestBed.createComponent(FundingPlanComponent);
component = fixture.componentInstance;
});
fit('should display a title',() => {
fixture.detectChanges();
expect(titleElement.nativeElement.textContent).toContain('Funding Plans');
});
});
Khi tôi chạy thử nghiệm, tôi nhận được:
Error: No provider for AuthHttp!
được indeedused bởi dịch vụ thực tế, nhưng không phải do giả. Vì vậy, vì một số lý do, giả không được tiêm hoặc sử dụng.
Bất kỳ lời khuyên nào? Cảm ơn!
Các liên kết được cung cấp sẽ đã vô cùng hữu ích, nhưng nó đã bị hỏng. Ý bạn là cái này? [Ghi đè nhà cung cấp của một thành phần] (https://angular.io/guide/testing#override-a-components-providers) – rchavarria
@rchavarria bạn nói đúng, liên kết được cập nhật. –