我正在嘗試爲我的自定義管道編寫一些基本測試,但是對於Jasmine和Angular管道來說,我有一些困難。這裏是我的菸斗:在Angular中測試自定義管道
十進制格式pipe.js
import { Pipe , PipeTransform } from '@angular/core';
import { DecimalPipe } from '@angular/common';
@Pipe({
name: 'myDecimalFormatingPipe'
})
export class MyDecimalFormatPipe implements PipeTransform {
constructor(public decimalPipe: DecimalPipe) {};
transform(value: any) {
if (value || value === 0) {
value = this.decimalPipe.transform(value, '1.2-2');
}
return value;
}
}
顯然,這種「自定義」管只是實現十進制管變換()現在,但將在未來改變。
這裏是我的規格:
import { MyDecimalFormatPipe } from './my-decimal-format.pipe';
import { DecimalPipe } from '@angular/common';
describe('MyDecimalFormatPipe',() => {
let pipe: MyDecimalFormatPipe;
let decimalPipe: DecimalPipe;
let inputValue: any = '2.1111';
beforeEach(() => {
decimalPipe = new DecimalPipe(inputValue);
myPipe = new MyDecimalFormatPipe(decimalPipe);
});
it('pipe is defined',() => {
expect(pipe instanceof MyDecimalFormatPipe).toBeTruthy();
});
describe('transform ',() => {
it('should return correct value type ',() => {
spyOn(decimalPipe, 'transform').and.callThrough();
decimalPipe.transform(inputValue, '1.2-2');
expect(decimalPipe.transform).toEqual('2.11');
});
});
});
我的第一個規範通行證,但對於變換()測試失敗,我得到的
error:
RangeError: Invalid language tag: 2.1111
at new NumberFormat (native)
at Function.NumberFormatter.format (
我不記得我看這是最後一次錯誤。 '無效的語言標籤'是指什麼?這個規格是什麼讓它突破?
我相信輸入值被解析爲一個日期或任何事情,使它嚇壞了。你嘗試使用數字值嗎?這會改變什麼嗎?測試似乎是正確的 –
你能詳細說明'使用數字值'是什麼意思嗎?我目前正在將inputValue中的字符串傳遞給transform(),因爲來自後端的JSON將具有數字作爲字符串....我應該嘗試傳遞一個數字..? – MadCatm2