Angular/Typescript/Webpackプロジェクトでは、コード変更後にユニットテストを書き直しました。非常に基本的なコンポーネントのテストを実行しているときに、問題の症状が誤りだったError:モジュール 'DynamicTestModule'によって予期しない値 'undefined'が宣言されました
:「エラー:予期しない値はモジュールによって宣言された 『未定義』 『DynamicTestModule』」
問題をデバッグするために、私は巻き上げコンポーネントのコンストラクタと基本的にすべてのコードからすべての依存関係を取り除きます。コンポーネントは何もしませんでしたが、まだエラーがあります。依存関係がないため、循環依存ではありませんでした。
フォルダのファイルは以下の通りであった。
--profile
----profile.component.ts
----profile.component.spec.ts
----profile.component.html
----index.ts (barrel)
(問題を把握するために取り除か最も意味のあるコード付き)コンポーネントは次のとおりです。
import { Component } from '@angular/core';
@Component({
selector: 'profile',
template: `<h1></h1>`
})
export class ProfileComponent {
title = 'Test Tour of Heroes';
constructor(){}
}
そしてスペックは以下のとおりです。
import { NO_ERRORS_SCHEMA, DebugElement } from '@angular/core';
import { ComponentFixture, TestBed }
from '@angular/core/testing';
import { ProfileComponent } from './profile.component';
console.log(ProfileComponent);
fdescribe('Component: Jasmine Spy Test',() => {
console.log(ProfileComponent);
let fixture: ComponentFixture<ProfileComponent>;
let component: ProfileComponent;
let fixture2: ComponentFixture<ProfileComponent>;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ProfileComponent]
}).compileComponents();
fixture = TestBed.createComponent(ProfileComponent);
component = fixture.componentInstance;
});
it(`should create instance of objects`,() => {
expect(1).toBe(1);
});
});
バージョン:
"@angular/core": "^4.0.0",
"karma": "~1.4.1"
"webpack": "^2.3.3"
他のパッケージがたくさんありますが、それは問題ではないと思います。
私はVisualCode 1.14.0(1.14.0)を使用していました。
同様の状況でこのエラーが発生した場合、Node/npmの実行中のすべてのスクリプトを終了するのに役立ちました。 Webpackのバグのように聞こえますが、それを再現することはできませんでした。 – jvoigt