使用jasmine使用异步承诺测试angular 2服务
所以,我在测试angular 2服务时遇到了一些问题。我的测试被标记为通过,但我在控制台中遇到以下错误: js:243未处理的承诺拒绝:在 没有当前规范,这可能是因为异步测试 超时;区域:ProxyZone;任务:承诺;值:错误: “expect”在没有当前规范时使用,这可能是 因为异步测试超时了 我的服务使用PockDB并返回一个承诺 这是我的服务:使用jasmine使用异步承诺测试angular 2服务,angular,typescript,promise,jasmine,pouchdb,Angular,Typescript,Promise,Jasmine,Pouchdb,所以,我在测试angular 2服务时遇到了一些问题。我的测试被标记为通过,但我在控制台中遇到以下错误: js:243未处理的承诺拒绝:在 没有当前规范,这可能是因为异步测试 超时;区域:ProxyZone;任务:承诺;值:错误: “expect”在没有当前规范时使用,这可能是 因为异步测试超时了 我的服务使用PockDB并返回一个承诺 这是我的服务: import { Injectable } from '@angular/core'; import { Project } from './p
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
});
}
}
…好吧,我已经摆弄这个有一段时间了。我可能需要使用fakeAsync和tick()??fakeAsync感觉不对,tho。看起来我应该在.finally()块中调用done(),但是.finally()不是一个方法。我刚开始和Jasmine一起测试承诺,所以也许我错过了一些明显的东西?如果您知道任何使用angular2、jasmine和promises的代码(或示例代码);那会有帮助的
我不想嘲笑你,并回报我自己的承诺
此测试应失败,因为响应!=项目没有,但我的控制台中有一个错误。救命啊 由
service.saveProject(project)返回的承诺。然后(
不等待,请从方法中删除async
,并从测试中返回此承诺,或者在测试中等待承诺结果
it('should be able to CREATE a new project (async)',
async (done) => {
let response = await service.saveProject(project)
expect(response).toEqual(project);
});
it('should be able to CREATE a new project (async)',
async (done) => {
let response = await service.saveProject(project)
expect(response).toEqual(project);
});