Модульное тестирование NodeJs Контроллер с Axios - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть контроллер и файл запроса, который выглядит следующим образом: я делаю запросы с помощью ax ios (к внешнему API) и отправляю ответ контроллера куда-то еще, мой вопрос: как применить модульное тестирование к моя функция контроллера (getInfoById), как мне посмеяться над axiosRequest, поскольку он находится внутри контроллера? Я использую Jest и только Jest для тестирования (может понадобиться что-то еще, но я не меняюсь)

file: axiosFile.js

  import axios from "axios"

  export const axiosRequest = async (name) => {
    const { data } = await axios.get("url")
    return data
  }


file: controllerFile.js

  import { axiosRequest } from "./axiosFile"

  export const getInfoById = async (name) => {
    try {
      const response = await axiosRequest(name)
      return { status: 200, ...response }
    } catch {
      return { status: 500, { err: "Internal ServerError" } }
    }
  }

Заранее спасибо. PS: это бэкэнд в NodeJs

1 Ответ

0 голосов
/ 26 февраля 2020

Вы можете смоделировать HTTP-вызовы, используя nock

Таким образом, вы сможете напрямую протестировать свой метод путем имитации основного HTTP-вызова. Так что в вашем случае что-то вроде

const nock = require('nock')

const scope = nock(url)
  .get('/somepath')
  .reply(200, {
    data: {
      key: 'value'
    },
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...