【发布时间】:2020-12-11 03:16:35
【问题描述】:
我不得不承认,我做了比实际组件测试更多的 e2e 测试,我已经向自己发誓要纠正这种糟糕的行为,希望在实际理解 Angular 的深层部分方面取得更多进展。但是现在我发现自己完全被一个看起来很简单的测试弄糊涂了……
import { EuroCurrencyPipe } from './euro-currency.pipe';
describe('EuroCurrencyPipe', () => {
it('create an instance', () => {
const pipe = new EuroCurrencyPipe();
expect(pipe).toBeTruthy();
});
it('should be "100 €"', () => {
const pipe = new EuroCurrencyPipe();
const euroSum: string = pipe.transform(100);
expect(euroSum).toBe('100,00 €');
});
});
真的,总而言之,没有什么令人兴奋的,对吧?但是让我们添加有问题的管道......它适用于没有其他货币的德语页面。
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'euroCurrency'
})
export class EuroCurrencyPipe implements PipeTransform {
transform(value: number): string {
return new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(value);
}
}
但是当我让测试运行它失败并显示错误消息...
Expected '100,00 €' to be '100,00 €'.
这让我感到困惑...euroSum.localeCompare('100,00 €') 结果为 1 而不是预期的 0
我错过了什么?这真的让我质疑我已经知道的东西......
【问题讨论】:
-
随便把
toBe改成toEqual -
@Taplar 哦,我也这样做了...没有骰子。
-
是的,字符串是原语所以没想到会这样。但不得不尝试。这是一个奇怪的。
-
那么 euroSum 的评估结果是什么?
-
@WillEvers 好吧,正如代码错误消息所说,'100,00 €' 但它与它应该等于的字符串不同。
标签: javascript angular typescript