小编Ian*_*nny的帖子

类型错误:无法读取未定义的属性“get”(修复了冲突导入不起作用)

尝试运行 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)

unit-testing jasmine typescript karma-jasmine angular

3
推荐指数
1
解决办法
6892
查看次数

encodeURI(JSON.stringify())在URL中显示%255B

我试图通过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"]))

javascript urlencode encodeuricomponent query-parameters

1
推荐指数
1
解决办法
115
查看次数

Angular Karma Jasmine 测试表单验证错误

我想进行测试以确保应用我在构建时对表单控件进行的验证。这可能是因为我在检查错误之前设置了表单控件值吗?该表单是在专用于整体表单的服务中构建的。这是一份 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)

karma-jasmine angular

1
推荐指数
1
解决办法
7741
查看次数