मैं एक घटक का परीक्षण करने की कोशिश कर रहा हूं जो किसी अन्य सेवा का उपयोग करता है। और मैं सेवा के लिए एक नकली प्रदान करके घटक को अलग करना चाहता हूं। आरसी 5 से पहले मैं बस addproviders
का उपयोग कर सकता हूं जिसे अब हटा दिया गया है और अगले आरसी द्वारा हटा दिया जाएगा। इसके बजाय मुझे TestBed
का उपयोग करना होगा। जब मैं किसी कारण से नकली कोणीय प्रदान करता हूं तो नकली उन सेवाओं की तलाश में रहती है जिन पर नकली निर्भर करता है। और DI exception
फेंकता है। जब मैं सभी निर्भरताओं को प्रदान करता हूं तो परीक्षण काम करता है लेकिन मैं प्रत्येक टेस्ट सूट के लिए खुद को दोहराना नहीं चाहता हूं। और यह बुनियादी ओओ सिद्धांतों को तोड़ देता है। मेरे टेस्ट स्वीट:कोणीय 2 मैक्स के साथ टेस्टबैड
describe('Component: DummyRestApi',() => {
class DummyRestApiTestService {
GetAll() {
return Rx.Observable.create(observer => {
let data:Data[] = [];
data.push({
id: 0,
data: 'data'
});
observer.next(data);
observer.complete();
});
}
Add(data) {
}
}
let fixture;
let myMockWindow:Window;
// ToDo use the mocks
beforeEach(() => {
myMockWindow = <any> {location: <any> {hostname: '127.0.0.1'}};
TestBed.configureTestingModule({
declarations: [DummyRestApiComponent],
providers: [
// ServerAddressResolverService,
DummyRestApiComponent,
// ConfigurationService,
{provide: DummyRestApiService, useClass: DummyRestApiTestService},
// {provide: Window, useValue: myMockWindow}
],
imports: [FormsModule, HttpModule]
});
TestBed.compileComponents().catch(error => console.error(error));
// addProviders([
// DummyRestApiComponent,
// {provide: DummyRestApiService, useClass: DummyRestApiTestService},
// ]);
});
describe('Initializing',() => {
beforeEach(async(() => {
console.log('Compiling');
TestBed.compileComponents().catch(error => console.error(error));
console.log('Compiling again');
}));
it('should create an instance', async(() => {
var fixture = TestBed.createComponent(DummyRestApiComponent);
fixture.detectChanges();
expect(fixture.debugElement.componentInstance).toBeTruthy();
}
));
});
कोणीय 2.0.0-RC5
मैं इस बात की पुष्टि की। आपको सेवा के लिए आयात निर्दिष्ट करना होगा जैसे कि यह मजाक नहीं किया गया था। कम से कम आरसी 5 में। हालांकि, परीक्षण नकली सेवा का उपयोग करेगा। – Dave