2016-06-14 14 views
7

非常に基本的なジャスミンテストでTypeScriptアプリケーションをセットアップしたAngular2があります。私は自分のパイプの1つをテストしたい。ジャスミンでAngular2/TypeScriptパイプをテストする

lpad.pipe.ts HTMLテンプレートで

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

用法:

{{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(…) 

問題は私のテストの "価値"と "args"にあると思います。任意のアイデアを解決する方法?

答えて

8

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

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

あなたが代わりに以下を使用する必要があります。

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

あなたは100%正しいです。ありがとうございました。私はまたToEqual( '0001') "toEqual( '0001')"にする必要があります別のタイプミスを持っていた。それは今働いている。 –

+0

+1これはテストで役に立ちましたが、On Angular v4 +パイプがpipe.transform(value、arg1、arg2、arg3 ....)のように別々に引数を受け取ることを指摘するには、 –

関連する問題