Ложный топор ios при использовании функции конструктора ax ios - PullRequest
0 голосов
/ 23 января 2020

У меня есть служебная функция API, которая вызывает ax ios, используя обозначение конструктора:

axios({
   method,
   url: `${BASE_URL}/${url}`,
   data
});

Я хочу высмеять это, используя Jest, но не совсем уверен, как. Мне удалось только смоделировать указанную функцию c ax ios (get, post, et c.).

У кого-нибудь есть пример издевательского топора ios при его использовании таким образом?

1 Ответ

0 голосов
/ 23 января 2020

Вы можете использовать jest.mock (moduleName, factory, options) для макета axios функции.

Например

index.js:

import axios from 'axios';

export function main() {
  const BASE_URL = 'https://stackoverflow.com';
  const url = 'api';
  const data = {};
  return axios({
    method: 'GET',
    url: `${BASE_URL}/${url}`,
    data,
  });
}

index.test.js:

import { main } from '.';
import axios from 'axios';

jest.mock('axios', () => jest.fn());

describe('59873406', () => {
  it('should pass', async () => {
    const mResponse = { data: 'mock data' };
    axios.mockResolvedValueOnce(mResponse);
    const response = await main();
    expect(response).toEqual(mResponse);
    expect(axios).toBeCalledWith({ method: 'GET', url: 'https://stackoverflow.com/api', data: {} });
  });
});

Результаты модульных испытаний со 100% покрытием:

 PASS  src/stackoverflow/59873406/index.test.js
  59873406
    ✓ should pass (7ms)

----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files |      100 |      100 |      100 |      100 |                   |
 index.js |      100 |      100 |      100 |      100 |                   |
----------|----------|----------|----------|----------|-------------------|
Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        5.362s, estimated 13s

Исходный код: https://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/59873406

...