测试未调用的ModalController Ionic 3 spyOn方法 [英] Testing ModalController Ionic 3 spyOn method not called

查看:0
本文介绍了测试未调用的ModalController Ionic 3 spyOn方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试测试一种启动模式的方法,以前有人这样做过吗,也许有人能给我指个正确的方向?我已经编写了以下测试套件。

describe('bdb modal provider test suite', () => {

let bdbModal: BdbModalProvider;
let modal: Modal;
let modalCtrl: ModalController;

beforeEach(() => {
    TestBed.configureTestingModule({
        providers: [
            BdbModalProvider,
            { provide: ModalController, useClass: ModalControllerMock }
        ]
    });
    bdbModal = TestBed.get(BdbModalProvider);
    modalCtrl = TestBed.get(ModalController);
});

beforeEach(() => {
    modal = modalCtrl.create('ModalErrorPage', {});
});

it('should launch error modal', () => {
    spyOn(modal, 'present');
    bdbModal.launchErrModal('testing', 'error modal', 'OK');
    expect(modal.present).toHaveBeenCalled();
});
});

这是错误日志:

应启动错误模式 BDB模式提供程序测试套件 预计间谍在场的人已经被叫来了。 在用户上下文中。(webpack:///src/providers/bdb-modal/bdb-modal.spec.ts:31:30<;-测试配置/karma-测试-shim.js:140545:31)

推荐答案

1.创建模式和模式控制器的间谍。

    modalSpy = jasmine.createSpyObj('Modal', ['present']);
    modalCtrlSpy = jasmine.createSpyObj('ModalController', ['create']);
    modalCtrlSpy.create.and.callFake(function () {
        return modalSpy;
    });


2.在测试床中添加其条目,如下所示:

TestBed.configureTestingModule({

      declarations: [
        ..............
      ],

      providers: [
        ..............

        {
          provide: ModalController,
          useValue: modalCtrlSpy
        }
        ..............
      ],

      imports: [
        ............
      ]

    }).compileComponents();

  }));


3.测试用例如下:

it('#display() should display modal', () => {
    .........
    expect(modalSpy.present).toHaveBeenCalled(); 
    .........
});

这篇关于测试未调用的ModalController Ionic 3 spyOn方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆