2016-09-02 13 views
9

nhà cung cấp Hiện nay tôi đang trọng để sử dụng dịch vụ chế giễu như thế này:Làm thế nào để chế nhạo ống khi kiểm tra phần

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

tôi muốn làm điều tương tự cho các đường ống mà các thành phần sử dụng. Tôi đã thử, provide(PipeA, { useClass: MockPipeA })provide(PipeA, { useValue: new MockPipeA() }) nhưng cả hai đều không hoạt động.

+0

Không hứa hẹn khi bạn không có bất kỳ câu trả lời nào trong 4 tháng. Bạn đã bao giờ con số này ra? – coblr

+0

@coblr không may là nó không phải là vấn đề ưu tiên cao đối với tôi, nhưng tôi sẽ thử lại sớm với API thử nghiệm mới, có thể có một công việc xung quanh ngay bây giờ. – harunurhan

+0

Mọi giải pháp chưa? Tôi đã cố gắng không khai báo các đường ống ban đầu và thay vào đó tạo ra một đường ống giả và tuyên bố nó. Nhưng bằng cách nào đó kết quả đường ống được hiển thị luôn hiển thị một chuỗi rỗng '' – zhumingvictor

Trả lời

14

Bạn có thể thêm mockpipes của bạn trong declarations của TestBed:

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

Các MockPipe cần phải có trang trí @Pipe với tên ban đầu.

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

Có cách nào để theo dõi đường ống giả bằng Jasmine không? Tôi đang cố gắng thử dịch ống và kiểm tra nó đã được gọi với phím dịch chính xác. – Looted

1

Để cạy ống, hãy sử dụng câu trả lời của Dinistro. Để theo dõi đường ống, bạn có thể bổ sung điều đó với các thông tin sau:

let pipeSpy: jasmine.Spy; 

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

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

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

    expect(pipeSpy).toHaveBeenCalled(); 
} 
Các vấn đề liên quan