मैंने अन्य यूनिट परीक्षणों में <router-outlet>
संदेशों को खोने में भाग लिया है, लेकिन सिर्फ एक अच्छा अलग उदाहरण है, मैंने एक ऑथगार्ड बनाया है जो जांचता है कि कोई उपयोगकर्ता कुछ कार्यों के लिए लॉग इन है या नहीं।Angular2 के राउटर का परीक्षण कैसे करें।
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if (!this.authService.isLoggedIn()) {
this.router.navigate(['/login']);
return false;
}
return true;
}
अब मैं इस के लिए एक इकाई परीक्षण लिखना चाहते हैं:
इस कोड है।
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule.withRoutes([
{
path: 'login',
component: DummyComponent
}
])
],
declarations: [
DummyComponent
],
providers: [
AuthGuardService,
{
provide: AuthService,
useClass: MockAuthService
}
]
});
});
मैं एक DummyComponent कि कुछ नहीं करता है बनाया:
यह कैसे मैं अपने परीक्षण शुरू है। अब मेरा परीक्षण। मान लें कि सेवा झूठी वापस आती है और यह this.router.navigate(['/login'])
से चलाता है कि:
it('should not let users pass when not logged in',(): void => {
expect(authGuardService.canActivate(<any>{}, <any>{})).toBe(false);
});
इस के साथ "लोड करने के लिए प्राथमिक आउटलेट नहीं खोजा जा सका" एक अपवाद फेंक देते हैं। स्पष्ट रूप से मैं के बजाय toThrow()
का उपयोग कर सकता हूं, लेकिन यह एक बहुत ही समझदार समाधान की तरह प्रतीत नहीं होता है। चूंकि मैं यहां एक सेवा का परीक्षण कर रहा हूं, वहां कोई टेम्पलेट नहीं है जहां मैं <router-outlet>
टैग डाल सकता हूं। मैं राउटर का नकल कर सकता हूं और अपना खुद का नेविगेट फ़ंक्शन कर सकता हूं, लेकिन फिर राउटरटेस्टिंग मॉड्यूल का क्या मतलब है? शायद आप उस नेविगेशन को भी देखना चाहते हैं।
हाय क्या आप लॉगिन गार्ड की अपनी spec फ़ाइल प्रदान कर सकते हैं। इसके लिए टेस्ट केस लिखना शुरू करना मेरे लिए सहायक होगा। –
इसके लायक होने के लिए, मैं आपकी निराशा साझा करता हूं। 'राउटरटेस्टिंग मॉड्यूल' का एक भी उदाहरण नहीं मिल रहा है जो वास्तव में काम करता है ... –