我使用@ @角度9.0.7,@ngneat/spectator@5.3.1(用玩笑),Inputmask@5.0.3在一个项目中,一切工作的应用程序时,我跑ng serve,甚至ng build,但是当我尝试运行测试套件的失败@Pipe使用Inputmask:
@Pipe:
import { Pipe, PipeTransform } from '@angular/core';
import Inputmask from 'inputmask';
@Pipe({
name: 'appSomePipe',
})
export class SomePipe implements PipeTransform {
transform(value: string): string {
return Inputmask.format(value, {
jitMasking: true,
mask: '1111-1',
});
}
}
Run Code Online (Sandbox Code Playgroud)
@Spec:
import { createPipeFactory, SpectatorPipe } from '@ngneat/spectator/jest';
import { SomePipe } from './some.pipe';
describe('SomePipe', () => {
let spectator: SpectatorPipe<SomePipe>;
const …Run Code Online (Sandbox Code Playgroud) 我正在使用Spectator编写我的 Angular 8 测试并使用Jest来运行它们。根据自述文件,我可以setInput()用来将我的值分配给有效的字段名称。问题是在创建组件后正在验证输入,但在此之前我需要它,因为我在我的ngOnInit方法中使用它进行初始化:
// item.component.ts
@Input() items: Items[] = [];
ngOnInit(): void {
// do something with this.items
// read query param 'page' and use it for something
}
Run Code Online (Sandbox Code Playgroud)
和
// item.component.spec.ts
let spectator: SpectatorRouting<ItemComponent>;
const createComponent = createRoutingFactory({
component: ItemComponent,
queryParams: {page: 1}
});
beforeEach(() => spectator = createComponent());
it('test items', () => {
spectator.setRouteQueryParam('page', '2');
spectator.setInput("items", myItemsList);
});
Run Code Online (Sandbox Code Playgroud)
旁观者将正确设置 queryParampage和 Input items,但只有在组件已经创建之后。在组件创建期间ngOnInit将使用 …