राउटिंग पाथ के लिए टेस्ट सूट बनाते समय इसी मुद्दे में भागे:
{
path: 'edit/:property/:someId',
component: YourComponent,
resolve: {
yourResolvedValue: YourResolver
}
}
घटक में, मैंने उत्तीर्ण संपत्ति को निम्न के रूप में देखा:
ngOnInit(): void {
this.property = this.activatedRoute.snapshot.params.property;
...
}
परीक्षण चलाते समय, यदि आप अपने मॉक एक्टीवेटआउट "यूटील्यूव" में कोई प्रॉपर्टी वैल्यू पास नहीं करते हैं, तो "फिक्सचरटेटचेंजेज ()" का उपयोग करते हुए परिवर्तनों का पता लगाने पर आप अपरिभाषित हो जाएंगे। ऐसा इसलिए है क्योंकि ActivatedRoute के लिए नकली मानों में संपत्ति params.property शामिल नहीं है। फिर, यह घटक में 'this.property' को इनिशियलाइज़ करने के लिए फ़िराक के लिए उन परिमों के उपयोग के लिए आवश्यक है। आप इसे इस प्रकार जोड़ सकते हैं:
let fixture: ComponentFixture<YourComponent>;
let component: YourComponent;
let activatedRoute: ActivatedRoute;
beforeEach(done => {
TestBed.configureTestingModule({
declarations: [YourComponent],
imports: [ YourImportedModules ],
providers: [
YourRequiredServices,
{
provide: ActivatedRoute,
useValue: {
snapshot: {
params: {
property: 'yourProperty',
someId: someId
},
data: {
yourResolvedValue: { data: mockResolvedData() }
}
}
}
}
]
})
.compileComponents()
.then(() => {
fixture = TestBed.createComponent(YourComponent);
component = fixture.debugElement.componentInstance;
activatedRoute = TestBed.get(ActivatedRoute);
fixture.detectChanges();
done();
});
});
आप उदाहरण के लिए परीक्षण शुरू कर सकते हैं:
it('should ensure property param is yourProperty', async () => {
expect(activatedRoute.snapshot.params.property).toEqual('yourProperty');
....
});
अब, हम कहते हैं कि आप एक अलग संपत्ति मूल्य का परीक्षण करना चाहते हैं, तो आप अपने नकली सक्रियण को अद्यतन कर सकते हैं:
it('should ensure property param is newProperty', async () => {
activatedRoute.snapshot.params.property = 'newProperty';
fixture = TestBed.createComponent(YourComponent);
component = fixture.debugElement.componentInstance;
activatedRoute = TestBed.get(ActivatedRoute);
fixture.detectChanges();
expect(activatedRoute.snapshot.params.property).toEqual('newProperty');
});
उम्मीद है की यह मदद करेगा!