Тестирование ModalController Ionic 3 метод spyOn не вызывается - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь протестировать метод, который запускает модал, кто-нибудь делал это раньше, может кто-то, возможно, укажет мне правильное направление ??Я написал следующий набор тестов.

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 Ожидается присутствие шпиона.на UserContext.(веб-пакет: ///src/providers/bdb-modal/bdb-modal.spec.ts: 31: 30 <- test-config / karma-test-shim.js: 140545: 31) </p>

1 Ответ

0 голосов
/ 13 июня 2018

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(); 
    .........
});
...