подтвердите () нажмите симуляцию "да или нет" в Vue - PullRequest
0 голосов
/ 26 апреля 2019

Я должен сделать тест для экземпляра vue, используя jest, и тест включает всплывающее окно подтверждения, вопрос состоит в том, как имитировать нажатие кнопки «Да» во всплывающем окне. Я пытался использовать: window.confirm = jest.fn (() => true); а также: window.confirm = () => true; и изобретать что-то подобное: wrapper.confirm = () => true; Но не повезло, может у кого-то была похожая проблема?

1 Ответ

0 голосов
/ 13 мая 2019

Поскольку мы запускаем тесты в Nodejs, мы можем ссылаться на confirm как global.confirm, и если мы хотим протестировать функцию add, если она добавляет 2 всякий раз, когда confirm возвращает true, мы можем сделать это:

const add = require('./add');

describe('add', () => {

  describe('confirm returning true', () => {
    let result;
    beforeAll(() => {
      // we define confirm to be a function that returns true
      global.confirm = jest.fn(() => true);
      result = add(1);
    });

    it('should call confirm with a string', () => {
      expect(global.confirm).toHaveBeenCalledWith(
        expect.any(String),
      );
    });


    it('should add two', () => {
      expect(result).toBe(3);
    });
  });

  describe('confirm returning false', () => {

    let result;
    beforeAll(() => {
      // we define confirm to be a function that returns false
      global.confirm = jest.fn(() => false);
      result = add(1);
    });

    it('should call confirm with a string', () => {
      expect(global.confirm).toHaveBeenCalledWith(
        expect.any(String),
      );
    });

    it('should NOT add two', () => {
      expect(result).toBe(1);
    });
  });
});

рабочий пример онлайн

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...