그래서 내 angular2 서비스를 테스트하는 데 문제가 있습니다. 내 테스트가 통과로 표시되지만 콘솔에이 오류가 표시됩니다.비동기 약속을 사용하여 jasmine 각도 2 서비스를 테스트
context.js:243 Unhandled Promise rejection: 'expect' was used when there was no current spec, this could be because an asynchronous test timed out ; Zone: ProxyZone ; Task: Promise.then ; Value: Error: 'expect' was used when there was no current spec, this could be because an asynchronous test timed out
내 서비스는 PouchDB를 사용하고 약속을 반환합니다.
여기 내 서비스입니다 :
import { Injectable } from '@angular/core';
import { Project } from './project';
declare var PouchDB:any;
@Injectable()
export class ProjectService {
db: any;
constructor() {
if(navigator.vendor && navigator.vendor.indexOf('Apple') > -1){
this.db = new PouchDB('projects', {adapter: 'fruitdown'});
}else{
this.db = new PouchDB('projects');
}
}
saveProject(project:Project): Promise<any>{
return this.db.put(project);
}
getProjects(limit:number,skip:number): Promise<any> {
return this.db.allDocs({
include_docs: true,
attachments: false,
descending: true,
limit: limit,
skip: skip
});
}
}
여기에 좋아 ... 내 스펙
import { TestBed, inject, async } from '@angular/core/testing';
import { Project, ProjectService } from './index';
describe('ProjectService',() => {
let project: Project;
let service: ProjectService;
let createFakeProject = function() {
let project = new Project;
project._id = 'iwhxu27i';
project.name = 'foo bar';
project.email = '[email protected]';
return project;
}
beforeEach(() => {
const injector = TestBed.configureTestingModule({
providers: [ProjectService]
});
service = injector.get(ProjectService);
project = createFakeProject();
});
it('should be able to CREATE a new project (async)',
async((done) => {
service.saveProject(project).then(
response => {
expect(response).toEqual(project);
done();
});
}));
});
, 그래서 나는 잠시 동안이 바이올린을 켜는했습니다. fakeAsync 및 tick()을 사용해야 할 수도 있습니다 ?? fakeAsync는 옳다고 생각하지 않습니다. .finally() 블록에서 done()을 호출해야하는 것처럼 보이지만 .finally()는 메서드가 아닙니다. Jasmine과의 약속 테스트를 처음 접해 보았습니다. angular2, jasmine 및 promises를 사용하는 코드 (또는 예제 코드)를 알고 있다면; 그게 도움이 될거야.
나는 PouchDB를 조롱하고 내 자신의 스텁이있는 Promise를 반환하고 싶지 않습니다.
이 테스트는 response! = project; 그것은하지만 내 콘솔에 오류가 발생하지 않습니다. 도움!
기다리는 중! 정확히 내가 필요한 것; 고맙습니다! – esharp