2016-06-14 4 views
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(…) 

Я думаю, что проблема связана с «значением» и «аргументами» моего теста. Любая идея, как решить?

ответ

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 может принимать аргументы отдельно, такие как pipe.transform (value, arg1, arg2, arg3 ....) –

Смежные вопросы