ค้นหาเว็บไซต์

angularjs - ข้อผิดพลาด: ค่า 'undefined' ที่ไม่คาดคิดถูกประกาศโดยโมดูล 'DynamicTestModule'


ในโครงการ Angular/Typescript/Webpack ของฉัน ฉันกำลังเขียนทดสอบหน่วยใหม่หลังจากการแก้ไขโค้ด

อาการของปัญหาคือเกิดข้อผิดพลาดเมื่อรันการทดสอบส่วนประกอบพื้นฐานมาก: "ข้อผิดพลาด: ค่าที่ไม่คาดคิด '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)

คำตอบ #1

ประเด็นที่แท้จริงคือ VisualCode ตรวจพบว่า ProfileComponent อยู่ใน ./profile.component แต่บรรทัด console.log ที่พิมพ์ออกมาบอกว่า 'undefined' และไม่มีข้อผิดพลาดการคอมไพล์/การคอมไพล์เป็นรหัสเกิดขึ้น

สังเกตว่ามีไฟล์ .html แยกต่างหากในโฟลเดอร์ แต่โค้ดไม่ได้อ้างอิงถึงมัน

ProfileComponent เริ่มมีค่า (ไม่ใช่ undefined อีกต่อไป) เมื่อฉันเปลี่ยนชื่อไฟล์ profile.component.html — ต้องมีบางอย่างเกี่ยวกับการสร้างของ webpack

ฉันไม่รู้ว่ามีอะไรผิดพลาดกับชุดไฟล์ชุดนี้โดยเฉพาะ เพราะมีหลายโฟลเดอร์ที่มีรูปแบบการตั้งชื่อ/การตั้งค่าที่เหมือนกันในโปรเจกต์นี้ที่สามารถรันการทดสอบได้อย่างถูกต้อง

ฉันทิ้งสิ่งนี้ไว้ที่นี่ในกรณีที่มีใครเจอข้อผิดพลาดนี้

คำตอบ #2

ฉันก็เจอปัญหานี้เหมือนกัน คอมโพเนนต์ที่ฉันทดสอบไม่ได้ถูกประกาศในโมดูลใด ๆ ฉันเคยคอมเมนต์โค้ดในโมดูลนั้น หลังจากลบคอมเมนต์ ข้อผิดพลาดก็ถูกแก้ไข

บทความที่เกี่ยวข้อง