написание шутливых тестов для утилитарных классов - PullRequest
0 голосов
/ 13 мая 2019

в Vue, у меня есть класс util, где я абстрагировал вызов axios и немного логики.

импорт Axios из 'axios' .. код выглядит примерно так

export default {
  getStudentNumber (name) {
    Axios.post('myurl', { studentName: name }).then({
      //some logic
      //return
    })
  }
}

Это вызывается из моего класса Vue ... Я написал шутки для Vue и высмеял Axios в этом ... Но есть ли способ написать отдельные тесты для этого класса обслуживания? Как это написать? Потому что у меня много логики в этом ... Я использую Jest

1 Ответ

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

Вы можете написать тест для вашего сервиса так:

import Axios from 'axios';
import myService from './myService';

jest.mock('axios');

describe('my service', () => {
  describe('getStudentNumber', () => {
    it('should call Axios.post with myurl and studentName', () => {
      myService.getStudentNumber('mock name');
      expect(Axios.post).toHaveBeenCalledWith('myurl', { studentName: 'mock name' })
    });

    describe('given a successful response', () => {
      beforeAll(() => {
        // setup mock for successful flow
        Axios.post.mockResolvedValue({ responseMock });
      });

      it('should do this', () => {
        const result = myService.getStudentNumber();
        // describe the expected result 
        expect(result).toEqual({ ...... });
      });
    });

    describe('given an error', () => {
      beforeAll(() => {
        // setup mock for non-successful flow
        Axios.post.mockRejectedValue(new Error('some mock error'));
      });

      it('should do that', () => {
        const result = myService.getStudentNumber();
        // describe the expected result 
        expect(result).toEqual({ ...... });
      });
    });
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...