【问题标题】:Testing Angular2 / TypeScript pipe with Jasmine用 Jasmine 测试 Angular2 / TypeScript 管道
【发布时间】:2016-10-15 01:52:11
【问题描述】:

我有一个带有 TypeScript 应用程序设置的 Angular2 和非常基本的 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);
    }
}

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

我认为问题在于我的测试的“值”和“参数”。知道如何解决吗?

【问题讨论】:

    标签: javascript typescript angular jasmine


    【解决方案1】:

    这是因为你在使用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')
      });
    
    }); // <----------------
    

    【讨论】:

    • 你是 100% 正确的。谢谢你。我还有另一个错字“ToEqual('0001')”应该是“toEqual('0001')”。它现在可以工作了。
    • +1 这帮助我进行了测试,并指出 On Angular v4+ 管道可以单独接收参数,例如 pipe.transform(value, arg1, arg2, arg3....)
    猜你喜欢
    • 2016-05-19
    • 1970-01-01
    • 2013-12-20
    • 2019-06-30
    • 2015-12-07
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 2018-12-23
    相关资源
    最近更新 更多