我目前正在自学Angular成为一名编码员,并且对所开发的应用程序有疑问。我已经建立了一个管道来检查是否已启用用户功能
import { Inject, Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'hasFeature'
})
export class HasFeaturePipe implements PipeTransform {
private $user: any;
constructor(@Inject('$user') $user) {
this.$user = $user;
}
transform(value: any, args?: any): any {
return this.$user.hasFeature(value);
}
}
'$ user'是在我构建并与Angular APP合并的AngularJS应用程序中定义的,因此它有点像我正在构建的混合应用程序。我已经将$ user包装在一个小的提供程序包装器中,该包装器添加到app.module.ts文件的providers数组中。这是包装器的内容:
const userService = ($injector: any) => $injector.get('$user');
export const ANGULARJS_SERVICES = [{
provide: '$user',
useFactory: userService,
deps: ['$injector']
}];
这就是我如何在app.module.ts文件中使用它
提供者:[I18N_PROVIDERS]
。现在,我不确定如何将$ user依赖项添加到管道测试中以及如何正确测试,这是我到目前为止所拥有的:
const mock$user = {hasFeature: (value) => {value === 'featureOK'}};
describe('HasFeaturePipe', () => {
it('create an instance', () => {
const pipe = new HasFeaturePipe('n/a');
expect(pipe).toBeTruthy();
});
describe('hasFeature', () => {
it('should', inject(['$user'], (mock$user) => {
const pipe = new HasFeaturePipe('featureOK');
expect(pipe).toBeTruthy(true);
}))
});
});
自然这是行不通的,并且出现错误“ 类型'string []'无法分配给类型'InjectionToken <(done:DoneFn)=> void>'。 类型'string []'中缺少属性'_desc'。“
有人可以帮忙解释一下如何解决我的问题吗?该管道在应用程序中可以正常工作,但我必须是一名优秀的开发人员并测试我的所有代码。预先感谢。