同事们,谁能告诉我,我正在尝试为管道配置testBed,只有当我将管道本身放入提供者中时,它才能起作用,我将对其进行测试。我无论如何也绕不开这件事,你能告诉我出什么事了吗?第二个问题:除了转换方法之外,我在管道中还有一个私有方法,我如何测试它?

发布于 2021-06-24 04:26:21
我会尝试用this的方式来做。
但是让它作为一个提供者是很好的,你正在抓住它的把柄。
要测试私有方法,您可以设置适当的环境,使其遍历私有方法。
@Pipe({ name: 'xyz', pure: true })
export class SdDateFormatPipe implements PipeTransform {
value: number;
constructor(private datePipe: DatePipe, private configService: ConfigService) {}
transform(value: string): string {
if (value.includes('a')) {
this.setValue(1);
} else {
this.setValue(2);
}
}
private setValue(num: number) {
this.value = num;
}
}it("should set value to 1 if the string has a", () => {
pipe.transform('abc');
expect(pipe.value).toBe(1);
});
it("should set value to 2 if the string does not have an a", () => {
pipe.transform('xyz');
expect(pipe.value).toBe(2);
});因此,最终,看看你从私有方法中得到了什么,并断言它做了它应该做的事情。
发布于 2021-06-24 04:27:01
如果没有depedencies注入,您可以使用let管道= new SdDateFormatPipe()进行实例化。
关于私有方法,它可能是在公共方法内部调用的,所以为了在测试中涵盖它,正确和推荐的方法是制作一个测试用例,在测试用例中它将调用私有方法。
https://stackoverflow.com/questions/68106533
复制相似问题