7
Ho un Angular2 con l'installazione dell'applicazione TypeScript con test Jasmine di base. Voglio testare una delle mie pipe.Testing pipe Angular2/TypeScript con Jasmine
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);
}
}
utilizzo nel modello HTML:
{{size.SizeCode | lpad:['0000']}}
lpad.pipe.spec.ts - Il mio test (che non funziona)
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')
});
}
Messaggio di errore:
Error: TypeError: Cannot read property 'length' of undefined(…)
Penso che il problema sia con "valore" e "arg" del mio test. Qualche idea su come risolvere?
Sei corretta al 100%. Grazie. Ho anche avuto un altro errore di battitura "ToEqual ('0001')" dovrebbe essere "toEqual ('0001')". Funziona ora. –
+1 questo mi ha aiutato su un test, e solo per puntare sul fatto che i tubi On Angular v4 + possono ricevere argomenti separatamente come pipe.transform (valore, arg1, arg2, arg3 ....) –