我是Jasmine的新手,我试图编写一个简单的单元测试,检查我的方法是否返回预期值。这里是我的角度应用的方法:用Jasmine测试方法的可观察返回值
saveEvent(techEvent): Observable<IEvent>{
let headers = new Headers({ 'Content-Type': 'application/json'})
let options = new RequestOptions({headers: headers})
return this.http.post('/api/events', techEvent, options)
.map((response: Response) => {
//have an updated copy of saved event
return response.json()
}).catch(this.handleError)
}
正如你可以看到,这是一个后方法节省了“techEvent”对象。这里是我试图在我的规范编写测试:
it('should save the event',() => {
var testEvent = { id: 7, name: "AngularJS"}
mockHttp.post.and.returnValue(Observable.of(false))
techEventService.saveEvent(<IEvent>testEvent)
expect(techEventService.saveEvent).toBe(jasmine.any(Object))
})
测试失败:(我的目标在这里是简单地测试该方法返回一个对象,并返回传递特定对象我不知道。如果我还可以测试它是否是JSON ...
这使得完美的感觉!我想测试响应是一个对象,而不是方法本身。我在运行此测试时遇到了以前从未见过的错误... ZoneQueueRunner.jasmine.QueueRunner.ZoneQueueRunner.execute错误(http:// localhost:9878node_modules/zone.js/dist/jasmine-patch。 js:132:42)[] \t at [] –
MadCatm2
请确保您的test.ts中包含以下行:require('zone.js/dist/zone'); require('zone.js/dist/long-stack-trace-zone'); require('zone.js/dist/async-test'); require('zone.js/dist/fake-async-test'); require('zone.js/dist/sync-test'); require('zone.js/dist/proxy-zone'); //自zone.js 0.6.14 require('zone.js/dist/jasmine-patch'); //从zone.js开始0.6.14 –
我需要澄清,因为我不确定test.ts究竟是什么。那是我的spec文件,我正在写测试本身,比如eventservice.spec.ts?是业务配置或垫片文件...或茉莉花核心中的某个地方?我的zone.js是0.8.4 – MadCatm2