开玩笑不使用我的模拟,而是用于通过node_modules

时间:2019-10-18 15:58:47

标签: reactjs react-redux jestjs integration-testing react-testing-library

我有一个Jest测试,它正在构建一个redux组件,该组件的一部分调用了许多sagas,而后者又调用了许多ajax函数。

其中一个ajax函数正在使用https://github.com/kineticdata/react-kinetic-core中的CoreApi组件,另一个是在本地函数中。

我已经在/ src / __ 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的模拟(在Container组件传奇中调用)

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而不是模拟,而是对我的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

我不知道我的模拟物是否在同一个地方,为什么一个人被捡起而另一个人不被捡起。有什么想法吗?!

0 个答案:

没有答案