7
我有一个Angular2,带有非常基本的Jasmine测试的TypeScript应用程序设置。我想测试一个管道。用Jasmine测试Angular2/TypeScript管道
lpad.pipe.ts
import {Pipe, PipeTransform} from '@angular/core';
@Pipe({
name: 'lpad'
})
export class LPadPipe implements PipeTransform {
transform(value: any, args: string[]): any {
let pad = args[0];
return (pad + value).slice(-pad.length);
}
}
使用在HTML模板:
{{size.SizeCode | lpad:['0000']}}
lpad.pipe.spec.ts - 我的测试(不工作)
import { LPadPipe } from './lpad.pipe';
describe('LPadPipe'),() => {
let pipe: LPadPipe;
beforeEach(() => {
pipe = new LPadPipe();
});
it('transforms "1" to "0001"',() => {
let value: any = "1";
let args: string[] = ['0000'];
expect(pipe.transform(value, args)).ToEqual('0001')
});
}
错误消息:
Error: TypeError: Cannot read property 'length' of undefined(…)
我认为问题出在我测试的“价值”和“参数”上。任何想法如何解决?
你是100%正确的。谢谢。我还有另一个错字“ToEqual('0001')”应该是“toEqual('0001')”。它正在工作。 –
+1这帮助我进行测试,并指出On Angular v4 +管道可以单独接收参数,如pipe.transform(value,arg1,arg2,arg3 ....) –