3
비교적 고립 된 Pipe
에 대한 테스트를 구현하려고합니다. angular-cli
(@angular
2.0.0)의 최신 버전을 사용하고 있습니다.의존성이있는 각진 2 각형 파이프 테스트
import { Pipe, PipeTransform } from "@angular/core";
import { DatePipe, JsonPipe } from "@angular/common";
@Pipe({name: 'dataTableFormat'})
export class DataTablePipe implements PipeTransform {
// values with type 'json' are parsed to json. As a result, string values may be displayed with quotes ("<string>").
// To avoid that, we remove these quotes with this regex
private quotesExp: RegExp = /^\"|\"$/gi;
constructor(private datePipe: DatePipe, private jsonPipe: JsonPipe) {
}
transform(value: string, type: string): string {
switch (type) {
case "date":
return this.datePipe.transform(value, 'short');
case "json":
return this.jsonPipe.transform(value).replace(this.quotesExp, "");
default:
return value;
}
}
}
및 사양 코드는 다음과 같습니다 :
파이프 코드는
import {TestBed} from "@angular/core/testing";
import {DataTablePipe} from "./data-table.pipe";
import {DatePipe, JsonPipe} from "@angular/common";
describe('DataTableFormat',() => {
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ DataTablePipe ],
providers: [
DatePipe, JsonPipe
]
});
});
it('sanity',() => {
expect(true).toBeTruthy();
});
it('should transform ',() => {
let fixture = TestBed.createComponent(DataTablePipe);
let comp = fixture.componentInstance;
let testDate:Date = new Date();
let datePipe = fixture.debugElement.injector.get(DatePipe);
expect(comp.transform(testDate.toString(), 'date')).toBe(datePipe.transform(testDate));
});
});
정신의 테스트를 통과하지만, 실제 테스트는 오류와 함께 실패 :
Error: Cannot create the component DataTablePipe as it was not imported into the testing module!
at TestBed.createComponent (webpack:///Users/sninio/dev/csp-ui-ng/~/@angular/core/bundles/core-testing.umd.js:1144:0 <- src/main/js/test.ts:6022:23)
at Function.TestBed.createComponent (webpack:///Users/sninio/dev/csp-ui-ng/~/@angular/core/bundles/core-testing.umd.js:972:0 <- src/main/js/test.ts:5850:33)
at Object.<anonymous> (webpack:///Users/sninio/dev/csp-ui-ng/src/main/js/app/pages/+platform/events/data-table/data-table.pipe.spec.ts:23:30 <- src/main/js/test.ts:14770:41)
at ZoneDelegate.invoke (webpack:///Users/sninio/dev/csp-ui-ng/~/zone.js/dist/zone.js:203:0 <- src/main/js/test.ts:26741:28)
at ProxyZoneSpec.onInvoke (webpack:///Users/sninio/dev/csp-ui-ng/~/zone.js/dist/proxy.js:72:0 <- src/main/js/test.ts:18285:39)
at ZoneDelegate.invoke (webpack:///Users/sninio/dev/csp-ui-ng/~/zone.js/dist/zone.js:202:0 <- src/main/js/test.ts:26740:34)
at Zone.run (webpack:///Users/sninio/dev/csp-ui-ng/~/zone.js/dist/zone.js:96:0 <- src/main/js/test.ts:26634:43)
at Object.<anonymous> (webpack:///Users/sninio/dev/csp-ui-ng/~/zone.js/dist/jasmine-patch.js:91:27 <- src/main/js/test.ts:18021:50)
I 내가 놓친 구성이 맞는지는 모르겠지만 어떤 이유에서 DataTablePipe
을 th로 가져 오지 못했습니다. 전자 테스트 모듈 ...
아이디어가 있으십니까?
이것은 작동하지 않습니다. 누락 된 공급자 오류가 발생합니다. 오류 : DatePipe에 대한 공급자가 없습니다! src/main/js/test.ts –
테스트했을 때 잘 작동했습니다. 내가 게시 한 정확한 코드를 사용했습니다. 방금'TestBed'에서'선언문 '을 삭제했습니다. 그 외에, 내 대답에 게시 한 것을 제외하고 모두 동일합니다 –
angular-cli로 테스트 했습니까? 나는 그것이 실종 된 일부 구성이라고 확신한다. –