Jest не использует мои mocks, но для функций, импортированных через node_modules - PullRequest
0 голосов
/ 18 октября 2019

У меня есть Jest-тест, который создает компонент-редукс, часть этого компонента вызывает несколько саг, которые, в свою очередь, вызывают ряд функций ajax.

Одна из этих функций ajax использует компонент CoreApiиз https://github.com/kineticdata/react-kinetic-core другая находится в локальной функции.

Я смоделировал обе эти функции в / src / __ mocks__ - вызывается mocks для CoreApi. Мок, которые у меня есть для моей собственной функции, нет, и базовые функции вызываются.

Мой тест:

import React from 'react';
import {fireEvent, cleanup, waitForDomChange, wait} from '@testing-library/react'
import {renderWithRedux} from '../../../../helpers/testSetup'
import "@testing-library/jest-dom/extend-expect"
import {Container} from '../container'

// test setup
afterEach(cleanup)
beforeEach(() => {
 // fetch.resetMocks();
});

// consts
const match = {  
  params: {
    id: "123"
  }
} 

// tests
describe('Timeline Container', () =>  {

  it('Rendering timeline', async  () => {
      const {getAllByText,getByTestId,findByTestId,store} = renderWithRedux(<Container match={match} />)
      expect(getAllByText("Loading request")[0]).toBeVisible()

      // 2. Act

      // 3. Assert
  })

})

Мой макет для CoreApi (который вызывается из саги Компоненты контейнера))

const CoreAPI = {}

function fetchSpace() {
  console.log("in space mock")
  return (
    {
      "space": {
        "attributes": [{"a":"b"}]
      }
    }
  )
}

CoreAPI.fetchSpace = fetchSpace

export { CoreAPI }

Мой макет для моих локальных функций:

const getHeader = () => {
  console.log("in the mock  header")
  return(
    JSON.stringify({
      "request": {
        "title": "TEST"
      },
      "error": false,
      "errorLevel": 0
    })
  )
}

export const JspAccess = {
  getHeader
}

Где моя настоящая функция выглядит так:

const getHeader = (id) => {
  console.log("doing fetch call for "+id)
  return fetch("/api/?callback=lookup.json&id="+id",
    {
      method: 'GET',
      credentials: 'include',
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
      }
    }
  )
}

export const JspAccess = {
  getHeader
}

Но мой вывод Jest показываетconsole.logs из реальной функции не mock, но использует mock для моих вызовов CoreApi:

 PASS  src/components/app/__tests__/Container.test.js
  ● Console

console.log src/lib/api/jspAccess.js:2
  doing fetch call for 123
console.log src/__mocks__/react-kinetic-core.js:8
  in space mock

Я не понимаю, находятся ли мои mock в одном и том же месте, почему одно поднято, а другоене. Есть идеи?!

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