2016-06-14 30 views
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?

risposta

8

E 'perché avete gli errori quando si utilizza il metodo di describe:

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') 
    }); 

} // <---------------- 

si dovrebbe usare il seguente comando:

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') 
    }); 

}); // <---------------- 
+3

Sei corretta al 100%. Grazie. Ho anche avuto un altro errore di battitura "ToEqual ('0001')" dovrebbe essere "toEqual ('0001')". Funziona ora. –

+0

+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 ....) –