Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 离子单元测试控制器_Angular_Typescript_Ionic Framework_Jasmine - Fatal编程技术网

Angular 离子单元测试控制器

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({

我正在为一个应用程序工作,该应用程序使用警报告诉用户它正在使用nfc。我正在对此应用程序进行单元测试,并在alertcontroller.create方法上设置了一个间谍,如下所示:

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创建函数。