【发布时间】:2018-07-11 18:40:12
【问题描述】:
我正在尝试测试一个以 Object 和 Function 作为参数的方法,期望它已被其 Object 和 Function 调用,但即使我传递了一个函数,它也会返回错误。
Expected spy openContactEdit to have been called with [ Object({ ... }),
Function ] but actual calls were [ Object({ ... }), Function ].
这就是我的代码的样子:
contact-edit.test.ts
class ModalControllerMock {
static create(page: any, data?: any) {
return new ModalMock;
}
}
class ModalServiceMock {
openContactEdit(contact: any, onDismiss: (data) => any): any {
let modal = ModalControllerMock.create('EditContactPage', {
contact: contact
})
modal.present();
let data: any;
onDismiss(data);
}
}
it('should open edit contact page', () => {
const contact = {
"username": "callain0",
"name": "Cordelia Allain"
}
spyOn(modalService, 'openContactEdit').and.callThrough();
comp.editContact(contact)
expect(modalService.openContactEdit).toHaveBeenCalledWith(contact, () => { });
});
modal-service.ts
openContactEdit(contact: any, onDismiss: (data) => any) {
let modal = this.modalCtrl.create('EditContactPage', {
contact: contact
})
modal.onDidDismiss(data => {
onDismiss(data);
})
modal.present();
}
【问题讨论】:
-
匿名箭头函数的计算结果不会等于您实际调用它的函数。如果你不关心函数是什么,试试
jasmine.any。
标签: angular ionic2 karma-jasmine