[解決済み] Error.を修正する方法 No value accessor for form control with name' in Angular Unit Test?
2022-02-15 23:45:03
質問内容
ngModelを使用したカスタムコンポーネントを使用するコンポーネントのテストに失敗しました。
HTMLコードは以下のようになります(詳しくは下のリプロダクトをご覧ください)。
<custom-control name="formCode" [(ngModel)]="testValue"></custom-control>
このコードは私のアプリでは動作していますが、私のテストでは以下のエラーで失敗しています。
Uncaught Error: Uncaught (in promise)。Error: 名前: 'formCode' を持つフォームコントロールの値アクセサがありません。
エラーです。名前: 'formCode' を持つフォームコントロールの値アクセッサはありません。
テストはjasmineで実行されます
様々なインポートを試しましたが、どれも私の問題を解決していないようです。
再現コードはこちらです。 https://stackblitz.com/edit/angular-test-ng-model
解決方法は?
CustomControlComponentをテストでモック化していることが原因です。package.jsonに@angular/materialとその依存関係をインストールし、以下のspecファイルを使用してください。テストは成功します。
https://stackblitz.com/edit/angular-test-ng-model-vsk5re
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FormsModule, ReactiveFormsModule, NG_VALUE_ACCESSOR, DefaultValueAccessor, ControlValueAccessor } from '@angular/forms';
// import { MockComponent } from 'ng2-mock-component';
import{MatFormFieldModule, MatInputModule} from '@angular/material';
import { ParentControlComponent } from './parent-control';
import {CustomControlComponent} from '../custom-control/custom-control';
describe('ParentControlComponent', () => {
let component: ParentControlComponent;
let fixture: ComponentFixture<ParentControlComponent>;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [
CustomControlComponent,
ParentControlComponent,
// MockComponent({ selector: 'custom-control' }),
],
imports: [
BrowserAnimationsModule,
FormsModule,
ReactiveFormsModule,
MatFormFieldModule,
MatInputModule
],
providers: [
]
})
.compileComponents();
fixture = TestBed.createComponent(ParentControlComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
関連
-
[解決済み】Angularで実際のエラーメッセージの代わりに「Http failure response for (unknown url): 0 Unknown Error」が表示されるのですが。
-
[解決済み】angularモジュールでModule has no exported memberエラー
-
[解決済み] Angular EXCEPTION: Http用のプロバイダがありません。
-
[解決済み] 未定義のプロパティ 'filter' を読み取ることができません。
-
[解決済み] Uncaught (in promise): Ionic 2でcordova_not_available。
-
[解決済み] AngularのmatSortがソートされない
-
[解決済み] Angular2 Selectorが、ネストしたComponentのどの要素にもマッチしない。
-
[解決済み] コンポーネントは2つのモジュールの宣言に含まれる
-
[解決済み] Angular4 - フォームコントロールの値アクセサがない
-
[解決済み] TDDのためのJavaScriptユニットテストツール
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】VSCodeはモジュール'@angular/core'や他のモジュールを見つけることができません。
-
[解決済み】angularモジュールでModule has no exported memberエラー
-
[解決済み] angularでpreflightのレスポンスがHTTP okステータスにならない
-
[解決済み] エラーです。複数のモジュールがマッチしました。skip-import オプションを使用して、最も近いモジュールへのコンポーネントのインポートをスキップしてください。
-
[解決済み] Angular 2のコンポーネントプロパティにデフォルト値を設定する方法は?
-
[解決済み] ngForにフィルターをかけるには?
-
[解決済み] typescriptを使用して、同じhtml DOM要素で「シングルクリック」と「ダブルクリック」を処理する方法:Angular 2または4?
-
[解決済み] ZoneAwarePromiseとは
-
[解決済み] AngularのmatSortがソートされない
-
[解決済み] ag-gridで「表示する行がありません」テキストをプログラムで変更するにはどうすればよいですか?