Angular 离子单元测试控制器
我正在为一个应用程序工作,该应用程序使用警报告诉用户它正在使用nfc。我正在对此应用程序进行单元测试,并在alertcontroller.create方法上设置了一个间谍,如下所示:Angular 离子单元测试控制器,angular,typescript,ionic-framework,jasmine,Angular,Typescript,Ionic Framework,Jasmine,我正在为一个应用程序工作,该应用程序使用警报告诉用户它正在使用nfc。我正在对此应用程序进行单元测试,并在alertcontroller.create方法上设置了一个间谍,如下所示: alertController.create = jasmine.createSpy().and.resolveTo({ present: jasmine.createSpy() }); expect(alertController.create).toHaveBeenCalledWith({
alertController.create = jasmine.createSpy().and.resolveTo({
present: jasmine.createSpy()
});
expect(alertController.create).toHaveBeenCalledWith({
header: 'NFC aan het lezen...',
message: 'Hou de pas tegen de achterkant van de telefoon',
buttons: [
{
text: 'Anuleren',
role: 'cancel',
handler: () => nfc.stopRead()
}
]
});
expect(alertController.create).toHaveBeenCalledWith({
header: 'NFC aan het lezen...',
message: 'Hou de pas tegen de achterkant van de telefoon',
buttons: [
{
text: 'Anuleren',
role: 'cancel',
handler: jasmine.any(Function) as any
}
]
});
在单元测试中,我想检查是否使用正确的警报选项调用它,如下所示:
alertController.create = jasmine.createSpy().and.resolveTo({
present: jasmine.createSpy()
});
expect(alertController.create).toHaveBeenCalledWith({
header: 'NFC aan het lezen...',
message: 'Hou de pas tegen de achterkant van de telefoon',
buttons: [
{
text: 'Anuleren',
role: 'cancel',
handler: () => nfc.stopRead()
}
]
});
expect(alertController.create).toHaveBeenCalledWith({
header: 'NFC aan het lezen...',
message: 'Hou de pas tegen de achterkant van de telefoon',
buttons: [
{
text: 'Anuleren',
role: 'cancel',
handler: jasmine.any(Function) as any
}
]
});
但是问题是,由于处理程序的原因,它在运行测试时会出现错误。如何有效地测试是否使用正确的值调用了alertcontroller.create函数?目前,测试给出以下错误:
Expected $[0].buttons[0].handler = Function to equal Function.
我想检查提供的对象是否正确,但函数没有检查。我得到了它
jasmine.any(Function)
因此,代码如下:
alertController.create = jasmine.createSpy().and.resolveTo({
present: jasmine.createSpy()
});
expect(alertController.create).toHaveBeenCalledWith({
header: 'NFC aan het lezen...',
message: 'Hou de pas tegen de achterkant van de telefoon',
buttons: [
{
text: 'Anuleren',
role: 'cancel',
handler: () => nfc.stopRead()
}
]
});
expect(alertController.create).toHaveBeenCalledWith({
header: 'NFC aan het lezen...',
message: 'Hou de pas tegen de achterkant van de telefoon',
buttons: [
{
text: 'Anuleren',
role: 'cancel',
handler: jasmine.any(Function) as any
}
]
});
什么是
nfc
?@KiranMistry nfc是控制我读取nfc卡的类,它有一个从侦听器取消订阅的方法stopRead,因此它只会在弹出窗口出现时读取。好的…所以nfc.stopRead()
函数没有正确调用如果没有调用,请尝试使用此{nfc.stopRead()}
@KiranMistry对于此测试的执行,是否调用它并不重要。问题在于单元测试期望处理程序与实际代码中的处理程序相同。这只是我的单元测试,它应该检查是否使用提供的值调用了alertController创建函数。