2016-02-01 15 views
7

मैं सबसे सरल घटक है कि एक routeLink उपयोग कर रहा है लिख रहा हूँ के साथ परीक्षण घटकों:कोणीय 2: रूटर

@Component({ 
    selector: 'memorySnippet', 
    templateUrl: '<div class="memory-snippet-wrapper" *ngIf="memory" 
        [routerLink]="['MainPanel', 'MemoryPanel', {'id' : this.memory.id}]">', 
    directives: [CORE_DIRECTIVES, ROUTER_DIRECTIVES] 
}) 
export class MemorySnippetComponent { 
    @Input() memory: Memory; 
} 

समस्या तब होती है जब मैं इस घटक परीक्षण करके देखें। पल मैं रूटर लिंक कर्मा लापता प्रदाताओं के बारे में शिकायत कर रहा है जोड़ें:

सभी प्रदाताओं को जोड़ने के बाद कर्मा पूछ रहा है मैं इस मिल:

beforeEachProviders(() => [ 
    MemorySnippetComponent, 
    MEMORY_SERVICE_PROVIDERS, 
    ROUTER_PROVIDERS, 
    ApplicationRef 
]); 

लेकिन जब मैं परीक्षण चलाने मैं इस त्रुटि मिलती है:

EXCEPTION: EXCEPTION: Error during instantiation of Token RouterPrimaryComponent! (RouterLink -> Router -> RouteRegistry -> Token RouterPrimaryComponent).

ORIGINAL EXCEPTION: unimplemented

ORIGINAL STACKTRACE: Error: unimplemented

मैं गलत क्या कर रहा हूं ??? क्या कोणीय 2 (2.0.0-बीटा .1) राउटर निर्देशों के साथ घटकों का परीक्षण करने के लिए तैयार नहीं है?

import {MockApplicationRef} from '@angular/core/testing'; 

beforeEachProviders(() => [ 
    ROUTER_PROVIDERS, 
    provide(APP_BASE_HREF, {useValue: '/'}), 
    provide(ROUTER_PRIMARY_COMPONENT, {useValue: YourComponent}), 
    provide(ApplicationRef, {useClass: MockApplicationRef} 
]); 

MockApplicationRef परीक्षण के इस प्रकार के लिए रूपरेखा द्वारा प्रदान की जाती है:

+0

कि इस त्रुटि मेरी व्याख्या होगा। यह अभी भी बीटा में है, और इस तरह के परीक्षण के लिए परीक्षण मार्गदर्शिका जारी नहीं की गई हैं। शायद आप स्रोत में राउटरप्रिमरी कॉम्पोनेंट पा सकते हैं और इंटरफ़ेस को कार्यान्वित कर सकते हैं, फिर इसे प्रदान करने के लिए 'प्रदान करें (राउटरप्रिमरी कॉम्पोनेंट, {उपयोग क्लास: MyRouterPrimaryComponent})' का उपयोग करें और शायद अपना परीक्षण काम कर लें। – SnareChops

+0

कोणीय टीम से परीक्षण बीज के साथ रेपो की जांच करें -> https://github.com/juliemr/ng2-test- इस बात से इसकी जांच की गई https://www.youtube.com/watch?v=C0F2E-PRm44 –

+0

क्या उस वाक्यविन्यास को वापसी की आवश्यकता नहीं है? 'पहले सेप्रोवाइडर्स (() => {वापसी [ मेमोरी स्निपेट कॉम्पोनेंट, MEMORY_SERVICE_PROVIDERS, ROUTER_PROVIDERS, एप्लिकेशनरफ ]}); –

उत्तर

5

नए रूटर के साथ अब उपयोग RC4 के लिए ...

beforeEach(() => addProviders([ 
    APP_ROUTER_PROVIDERS, // must be first 
    {provide: APP_BASE_HREF, useValue: '/'}, // must be second 
    {provide: ActivatedRoute, useClass: Mock}, 
    {provide: Router, useClass: Mock} 
])); 

इस दृष्टिकोण का उपयोग कर एक GitHub परियोजना है ...

https://github.com/danday74/angular2-coverage

9

आप एक beforeEachProviders विधि की तरह लग रही होनी चाहिए।

+0

धन्यवाद @cexbrayat, यह काम किया! क्या आप इस तरह के दस्तावेज के स्रोत को इंगित कर सकते हैं? –

+0

यह मेरी ईबुक ^^ books.ninja-squad.com से एक यूनिट परीक्षण है। लेकिन मुझे लगता है कि मैंने इसे फ्रेमवर्क स्रोत कोड AFAIR में पाया। – cexbrayat

+0

ग्रेट बुक, धन्यवाद! –

संबंधित मुद्दे