尝试运行 karma TS 规范文件时出现错误。所有模块和导入似乎都工作正常,没有冲突。尝试添加component.ngOninit()到 beforeEach() 和 it() 中,但没有取得任何成功。查看类似的问题与 HttpClientTestingModule 导入冲突或其他提供程序/声明冲突有关。我无法确定为什么 TypeError: Cannot read property 'get' of undefined 不允许此规范文件通过
规格文件
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {AcaPersonComponent} from './aca-person.component';
import {
MatCardModule, MatDividerModule,
MatFormFieldModule,
MatIconModule,
MatInputModule,
MatOptionModule,
MatRadioModule,
MatSelectModule
} from '@angular/material';
import {ReactiveFormsModule} from '@angular/forms';
import {MFGDatePickerModule} from 'mfg-datepicker';
import {TextMaskModule} from 'angular2-text-mask';
import {AppRoutingModule} from '../../../../../app-routing.module';
import {HttpClientTestingModule} from '@angular/common/http/testing';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {LandingPageComponent} from '../../../../../landing-page/landing-page.component';
describe('AcaPersonComponent', () => {
let component: AcaPersonComponent;
let …Run Code Online (Sandbox Code Playgroud) 我试图通过Angular中的queryParam,它由这样的对象数组组成fooArray = [{foo: 'bar', foo: false}, {foo: 'bar', foo: false}]。在URL queryParam中,我收到以下消息:使用时,%255BencodeURI(JSON.stringify(this.fooArray))
我试过使用encodeURI(JSON.stringify())将数组编码为queryParam和JSON.parse(decodeURIComponent())以检索参数
fooArray = [{foo: 'bar', foo: false}, {foo: 'bar', foo: false}]
fooParam: encodeURI(JSON.stringify(this.fooArray))
JSON.parse(decodeURIComponent(params["fooParam"]))
我想进行测试以确保应用我在构建时对表单控件进行的验证。这可能是因为我在检查错误之前设置了表单控件值吗?该表单是在专用于整体表单的服务中构建的。这是一份 6 页的登记表。我想确保我构建表单所用的验证器正在我的业力茉莉花测试中应用。Applicant 在 onInit 上定义,其中包含一个对后端进行 http 调用的服务和另一个构建表单的服务。我创建了一个通用注册表单模拟来表示从规范中的后端调用返回的数据。理想情况下,我需要开始工作的是期望所需的验证器和验证器模式实际上是在构建时传递到表单中的内容:
(请参阅本文底部的错误照片)
expect(errors.required).toBeTruthy();
expect(errors.pattern).toBeTruthy();
Run Code Online (Sandbox Code Playgroud)
该表单控件在构建时传递了 Validators.required。然而,在测试期间验证器错误显示为未定义......
表单生成器:
phone_number: [null, Validators.required],
Run Code Online (Sandbox Code Playgroud)
表单验证规范:
it('phone number field validity - required', () => {
const phoneNumber = component.applicant.controls.phone_number;
expect(phoneNumber.valid).toBeFalsy();
phoneNumber.setValue(mockGenericMaEnrollmentRefresh.applicant.phone_number);
const errors = phoneNumber.errors || {};
// expect(errors.required).toBeTruthy();
expect(errors.pattern).toBe(undefined);
expect(phoneNumber.valid).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)
组件 HTML:
<mat-form-field>
<mat-label>Phone *</mat-label>
<input [textMask]="{mask: phoneMask}" formControlName="phone_number" id="phone_number" matInput
type="text">
<mat-error *ngIf="applicant.controls.phone_number.errors?.required">Phone Number is
required.
</mat-error>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)
组件 TS:
import {Component, OnInit} from '@angular/core';
import {GoToStepConfig, MaNavigationService} from '../../services/ma-navigation/ma-navigation.service';
import {MaEnrollmentFormService} from '../../services/ma-enrollment-form/ma-enrollment-form.service';
import …Run Code Online (Sandbox Code Playgroud)