[解決済み] Angular 2 Karma Test 'component-name' は既知の要素ではありません。
2022-05-16 04:45:13
質問
AppComponentで、HTMLコードにnavコンポーネントを使用しています。UIは問題なく表示されています。ng serve.をしてもエラーは出ませんし、アプリを見てもコンソールでエラーは出ません。
しかし、私のプロジェクトでKarmaを実行すると、エラーが発生します。
Failed: Template parse errors:
'app-nav' is not a known element:
1. If 'app-nav' is an Angular component, then verify that it is part of this module.
2. If 'app-nav' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
私の app.module.ts :
があります。
import { NavComponent } from './nav/nav.component';
また、NgModuleの宣言部分にある
@NgModule({
declarations: [
AppComponent,
CafeComponent,
ModalComponent,
NavComponent,
NewsFeedComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
JsonpModule,
ModalModule.forRoot(),
ModalModule,
NgbModule.forRoot(),
BootstrapModalModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
を使っています。
NavComponent
の中で
AppComponent
app.component.ts
import { Component, ViewContainerRef } from '@angular/core';
import { Overlay } from 'angular2-modal';
import { Modal } from 'angular2-modal/plugins/bootstrap';
import { NavComponent } from './nav/nav.component';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Angela';
}
app.component.html
<app-nav></app-nav>
<div class="container-fluid">
</div>
同じような質問を見たことがあるのですが、その質問の回答では、その中にexportがあるナビコンポーネントにNgModuleを追加すればいいとありますが、それをやるとコンパイルエラーになります。
もあります。 app.component.spec.ts
import {NavComponent} from './nav/nav.component';
import { TestBed, async } from '@angular/core/testing';
import { AppComponent } from './app.component';
どのように解決するのですか?
ユニットテストでは、アプリケーションの他の部分からほとんど分離されたコンポーネントをテストしたいので、Angularはデフォルトでコンポーネント、サービスなどのモジュールの依存関係を追加しません。そのため、テストの中で手動で追加する必要があります。基本的に、ここには2つのオプションがあります。
A) テストでオリジナルのNavComponentを宣言する
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
AppComponent,
NavComponent
]
}).compileComponents();
}));
B) NavComponentのモック
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
AppComponent,
MockNavComponent
]
}).compileComponents();
}));
// it(...) test cases
});
@Component({
selector: 'app-nav',
template: ''
})
class MockNavComponent {
}
より詳細な情報は 公式ドキュメント .
関連
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
vue for 登録ページ効果 vue for sms 認証コードログイン
-
vueのグローバルがscss(mixin)を導入。
-
vueにおけるv-forループオブジェクトのプロパティ
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
[解決済み】gulp anythingを実行するたびに、アサーションエラーが発生します。- タスク関数を指定する必要があります
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
[解決済み] Angular 2の「コンポーネント」は既知の要素ではありません。
-
[解決済み] jQueryで名前を指定して要素を選択するには?
-
[解決済み] コンポーネントテンプレートで要素を選択するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
vueにおけるv-forループオブジェクトのプロパティ
-
vueが定義するプライベートフィルタと基本的な使い方
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み】ERROR エラーです。スイッチのname属性が指定されていないフォームコントロールの値アクセッサがない
-
[解決済み】ExpressJS - throw er Unhandled errorイベント
-
JavaScriptのgetElementById()メソッド入門
-
[解決済み] Angular2 RC6:「<コンポーネント>は既知の要素ではありません。