gpt4 book ai didi

Angular 6管道不支持构造函数

转载 作者:太空狗 更新时间:2023-10-29 18:29:14 24 4
gpt4 key购买 nike

这是我的date-formatter-by-timezone.pipe.ts 管道

import { Pipe, PipeTransform } from '@angular/core';
import { CookieService } from 'ngx-cookie-service';

@Pipe({
name: 'dateFormatterSecByTimezone'
})
export class DateFormatterSecByTimezonePipe implements PipeTransform {

constructor(private cookieService: CookieService) {}

timezone:any = parseInt(this.cookieService.get('TM_Z')) * 1000;

caculateTime(date , timezone){
//some code here ...
}

transform(date: any){
return this.caculateTime(date , this.timezone)
}
}

这是规范文件date-formatter-sec.pipe.spec.ts:

import { DateFormatterSecByTimezonePipe } from './date-formatter-sec-by- 
timezone.pipe';

describe('DateFormatterSecByTimezonePipe', () => {
it('create an instance', () => {
const pipe = new DateFormatterSecByTimezonePipe();
expect(pipe).toBeTruthy();
});
});

在 spec 文件中我得到了这个错误:

Expected 1 argument, but got 0.
(alias) new DateFormatterSecByTimezonePipe(cookieService: CookieService):
DateFormatterSecByTimezonePipe
import DateFormatterSecByTimezonePipe

但是当我使用编辑器建议的上面的代码时,它仍然不起作用!我在我的管道中导入了构造函数,因为我需要在这个管道中使用 cookie 数据。我该如何解决这个错误?

最佳答案

错误不是来自 Angular,而是一个简单的 Typescript 问题:您有一个带参数的构造函数,但在您的测试中您没有传递参数。这个参数通常由 Angular 中的 DI 提供。来自测试文档(参见下面的链接):

As service consumer, you don't worry about any of this. You don't worry about the order of constructor arguments or how they're created. As a service tester, you must at least think about the first level of service dependencies but you can let Angular DI do the service creation and deal with constructor argument order when you use the TestBed testing utility to provide and create services.

因此您可以使用

修复此特定测试
const pipe = new DateFormatterSecByTimezonePipe(null);

但是一旦您想编写实际断言管道行为的测试,这就不会很有用了。管道在这里本质上就像一个服务。如果服务不需要依赖项,您可以在测试中自己实例化服务,或者您也可以在测试中构建依赖项。如果你想让 Angular 使用 DI 来实例化服务,你需要使用它的工具:

https://angular.io/guide/testing

本文还介绍了使用 spy 等方法。

关于Angular 6管道不支持构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50771341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com