2016-09-02 14 views
9

Obecnie jestem nadrzędne dostawców do korzystania z usług szydzili tak:Jak drwić rur podczas testowania komponentu

beforeEach(inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { 
    tcb.overrideProviders(AddFieldToObjectDropdownComponent, 
     [ 
      provide(ServiceA, { useClass: MockServiceA })), 
      provide(ServiceB, { useClass: MockServiceB })) 
     ])... 

chcę zrobić to samo dla rur że ta część stosuje. Próbowałem, provide(PipeA, { useClass: MockPipeA }) i provide(PipeA, { useValue: new MockPipeA() }), ale oba nie działały.

+0

To nie jest obiecująca odpowiedź, gdy nie masz odpowiedzi w ciągu 4 miesięcy. Czy kiedykolwiek to rozgryzłeś? – coblr

+0

@coblr nie, niestety, nie był to dla mnie problem o wysokim priorytecie, ale spróbuję go jeszcze raz za pomocą nowego interfejsu API testów, być może jest już praca. – harunurhan

+0

Jakieś rozwiązanie jeszcze? Próbowałem nie zadeklarować oryginalnej rury i zamiast tego utworzyć fałszywą rurę i zadeklarować ją. Ale w jakiś sposób wynik renderowanego potoku zawsze pokazuje pusty ciąg " – zhumingvictor

Odpowiedz

14

Możesz dodać mockpipes w declarations z TestBed:

TestBed.configureTestingModule({ 
      declarations: [ 
       AppComponent, 
       MockPipe 
      ], 
      ... 

W MockPipe musi mieć @Pipe dekorator z oryginalną nazwą.

import {Pipe, PipeTransform} from '@angular/core'; 

@Pipe({name: 'pipename'}) 
class MockPipe implements PipeTransform { 
    transform(value: number): number { 
     //Do stuff here, if you want 
     return value; 
    } 
} 
+3

Czy istnieje sposób na szpiegowanie wyśmiewanej fajki za pomocą Jasmine? Próbuję kpić z translate pipe i sprawdzam, czy został wywołany z poprawnym kluczem tłumaczenia. – Looted

1

Aby odgiąć rurę, użyj odpowiedzi Dinistro. Aby szpiegować rurę, możesz ją uzupełnić następująco:

let pipeSpy: jasmine.Spy; 

beforeEach(() => { 
    TestBed.configureTestingModule... 

    pipeSpy = spyOn(MockPipe.prototype, 'transform'); 
}; 

it('should do whatever',() => { 
    doYourStuff(); 

    expect(pipeSpy).toHaveBeenCalled(); 
} 
Powiązane problemy