7
У меня есть Angular2 с настройкой приложения TypeScript с очень простыми тестами Жасмина. Я хочу проверить одну из моих труб.Тестирование трубки 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 может принимать аргументы отдельно, такие как pipe.transform (value, arg1, arg2, arg3 ....) –