단위 테스트 오류: 약속을 호출할 수 없습니다.동기화 테스트 내에서
유닛 테스트 각도 2 어플리케이션을 조사하기 시작했지만, 가장 간단한 예시에도 갇혀있습니다.간단한 테스트를 실행하여 효과가 있는지 확인하고 싶습니다. 기본적으로 제가 원하는 것은 제목 페이지의 값과 테스트의 값을 비교하는 것입니다.
이것이 제가 받는 오류인데, 제가 보기에는 모든 것이 동기화되어 있기 때문에 어디에서 오류가 발생하는지 모르겠습니다.
오류: 오류: 약속을 호출할 수 없습니다.동기화 테스트를 수행합니다.
단위 테스트:
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement, Input} from '@angular/core';
import { ToDoComponent } from './todo.component';
import { FormsModule } from '@angular/forms';
describe(("test input "),() => {
let comp: ToDoComponent;
let fixture: ComponentFixture<ToDoComponent>;
let de: DebugElement;
let el: HTMLElement;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ ToDoComponent ],
imports: [ FormsModule ]
})
.compileComponents();
});
fixture = TestBed.createComponent(ToDoComponent);
comp = fixture.componentInstance;
de = fixture.debugElement.query(By.css("h1"));
el = de.nativeElement;
it('should display a different test title', () => {
comp.pageTitle = 'Test Title';
fixture.detectChanges();
expect(el.textContent).toBe('Test Title423');
});
});
내 구성요소:
import {Component} from "@angular/core";
import {Note} from "app/note";
@Component({
selector : "toDoArea",
templateUrl : "todo.component.html"
})
export class ToDoComponent{
pageTitle : string = "Test";
noteText : string ="";
noteArray : Note[] = [];
counter : number = 1;
removeCount : number = 1;
addNote() : void {
if (this.noteText.length > 0){
var a = this.noteText;
var n1 : Note = new Note();
n1.noteText = a;
n1.noteId = this.counter;
this.counter = this.counter + 1;
this.noteText = "";
this.noteArray.push(n1);
}
}
removeNote(selectedNote : Note) :void{
this.noteArray.splice(this.noteArray.indexOf(selectedNote),this.removeCount);
}
}
변수 초기화를 각 이전의 a 안으로 이동합니다.
테스트 베드에서 물건을 꺼내거나 고정 장치나 부품을 관리해서는 안 됩니다.describe
범위. 당신은 시험 실행 범위 내에서만 이 일들을 해야 합니다: 내부 a.beforeEach
/beforeAll
,afterEach
/afterAll
, 아니면 안에서it
.
describe(("test input "), () => {
let comp: ToDoComponent;
let fixture: ComponentFixture<ToDoComponent>;
let de: DebugElement;
let el: HTMLElement;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ToDoComponent],
imports: [FormsModule]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ToDoComponent);
comp = fixture.componentInstance;
de = fixture.debugElement.query(By.css("h1"));
el = de.nativeElement;
})
it('should display a different test title', () => {
comp.pageTitle = 'Test Title';
fixture.detectChanges();
expect(el.textContent).toBe('Test Title423');
});
});
참고 항목
다른 이유로 같은 오류가 발생했습니다.저는.TestBed.get(Dependency)
에 전화를 걸다describe
블록. 수정 작업이 진행 중이었습니다.it
막다른 골목
틀렸습니다:
describe('someFunction', () => {
const dependency = TestBed.get(Dependency); // this was causing the error
it('should not fail', () => {
someFunction(dependency);
});
});
고정:
describe('someFunction', () => {
it('should not fail', () => {
const dependency = TestBed.get(Dependency); // putting it here fixed the issue
someFunction(dependency);
});
});
언급URL : https://stackoverflow.com/questions/43186533/unit-test-error-cannot-call-promise-then-from-within-a-sync-test
'programing' 카테고리의 다른 글
오류: 알 수 없는 공급자: $resourceProvider <- $resource <- my service Angular>JS서비스 (0) | 2023.10.04 |
---|---|
Maxscale이 router_options=master(slave/마스터 복제)가 있는 슬레이브에 쓰고 있으며 수신기가 중지되었습니다. (0) | 2023.10.04 |
laravel jwt의 만료 시간을 동적으로 설정합니다. (0) | 2023.10.04 |
좋은 지수가 무엇인지 어떻게 압니까? (0) | 2023.10.04 |
Visual Studio Community 2017 링커 문제 - MariaDB (0) | 2023.10.04 |