我正在尝试将 Jest 测试框架设置到我的项目中,该项目使用 Angular 14 和 Ionic 6,以及其他可能存在冲突的插件,例如 firebase 和 ngrx。
\n我一直主要关注Tim Deschryver 教程和其他一些教程,甚至从堆栈溢出中复制和粘贴一些关于我的 Jest 测试错误的代码,但没有任何效果。即使我尝试重新开始删除所有软件包和修改并重新开始,但没有运气。
\n我在这里有更新的存储库https://github.com/neil89/igloo(它非常易于管理)。但总的来说,我的主要修改是这些:
\n包.json
\n{\n "name": "igloo",\n "version": "0.0.1",\n "author": "Ionic Framework",\n "homepage": "https://ionicframework.com/",\n "scripts": {\n "ng": "ng",\n "start": "ng serve",\n "build": "ng build",\n "test": "jest",\n "lint": "ng lint",\n "e2e": "ng e2e"\n },\n "private": true,\n "dependencies": {\n "@angular/common": "^14.0.0",\n "@angular/core": "^14.0.0",\n "@angular/fire": "^7.4.1",\n "@angular/forms": "^14.0.0",\n "@angular/platform-browser": "^14.0.0",\n "@angular/platform-browser-dynamic": "^14.0.0",\n "@angular/router": "^14.0.0",\n "@briebug/jest": "^1.3.1",\n "@ionic/angular": "^6.2.6",\n "@ngrx/effects": "^14.3.1",\n "@ngrx/store": …Run Code Online (Sandbox Code Playgroud) 我在表单上使用ng-select,但现在我想将其特定配置包装在自定义组件上。问题是我正在使用FormArray包含其中几个的 a,以下面的方式:
this.profileForm = this.formBuilder.group(
{
...
linkedRoles: this.formBuilder.array([])
}
);
Run Code Online (Sandbox Code Playgroud)
这linkedRoles由下一个填充FormGroup:
let fgRoles: FormGroup;
for (let i = 0; i < this.userRoles.length; i++) {
fgRoles = this.formBuilder.group({
activeRole: [{ value: null }],
roles: [{ value: null }]
});
this.linkedRoles.push(fgRoles);
this.linkedRoles.controls[i].setValue({
activeRole: this.userRoles[i].role,
roles: this.extractUserRoles(this.userRoles[i])
});
Run Code Online (Sandbox Code Playgroud)
为了简单起见,还创建了 getter:
get linkedRoles(): FormArray {
return <FormArray>this.profileForm.get("linkedRoles");
}
Run Code Online (Sandbox Code Playgroud)
之后,在我的模板中,我使用了这个效果完美的组合:
<form [formGroup]="profileForm">
...
<table>
...
<tbody>
<tr formArrayName="linkedRoles"
*ngFor="let usuR of userRoles;
let idx = index" …Run Code Online (Sandbox Code Playgroud)