JEST MOCK - Как я могу смоделировать функцию после тестирования всего маршрута - PullRequest
0 голосов
/ 24 января 2019

Мне нужно смоделировать функцию процесса, находящуюся в классе GatewayImpl, чтобы разрешить мне полезную нагрузку 'mockData', но перед этим мне нужно протестировать весь маршрут.

import payload from './payloads/payloadRequire';        // payload to send
import {GatewayImpl} from '../src/classes/GatewayImpl'; //class where the function is 
import mockData from './mockData/mockData';            // payload to response

  var fClass = new GatewayImpl;
    request.post('/route/test').send(payload) // route I need to test and the payload
//const procc = fClass.proccess -> the function on GatewayImpl class calls process
    const spy = jest
    .spyOn(GatewayImpl, 'procc' ) //I don't know how to spy this class and function
    .mockReturnValue(mockData) // Need to resolve the Mockdata.json when the function process be called

1 Ответ

0 голосов
/ 24 января 2019
  1. Добавить __mocks__ каталог в src/classes.
  2. Добавить GatewayImpl.js в __mocks__.
  3. В __mocks__/GatewayImpl.js
// I don't know how GatewayImpl is implemented.
exports.GatewayImpl = {
  procc = jest.fn();
}
В тестовом файле вставить jest.mock('../src/classes/GatewayImpl') вверх.
jest.mock('../src/classes/GatewayImpl')
import payload from './payloads/payloadRequire';        // payload to send
import {GatewayImpl} from '../src/classes/GatewayImpl'; //class where the function is 
import mockData from './mockData/mockData';            // payload to response

Внутри beforeAll или beforeEach, GatewayImpl.procc.mockReturnValue(mockData) для имитации возвращаемого значения.
describe('procc', () => {
  beforeAll(() => {
    GatewayImpl.procc.mockReturnValue(mockData);
  });
  it('returns a data', () => {
    request.post('/route/test').send(payload);
    expect(GatewayImpl.procc()).toBe(mockData);
  });
});
...