Jest配置

时间:2016-11-29 18:26:54

标签: javascript react-native jestjs

我正在将Jest测试框架添加到我的React Native项目中。我收到以下错误:

Failed to get mock metadata: /Users/me/Documents/Development/project/node_modules/global/window.js

我的测试文件如下所示:

import 'react-native'
import React from 'react'
import { MyComponent } from '../components/MyComponent'

import renderer from 'react-test-renderer'

it('renders correctly', () => {
  const tree = renderer.create(<MyComponent />).toJSON()
  expect(tree).toMatchSnapshot()
})

还有我的package.json中的Jest配置:

"jest": {
    "preset": "jest-react-native",
    "testPathIgnorePatterns": ["/node_modules/", "/example/", "/lib/"],
    "testRegex": "(/tests/.*|\\.(test|spec))\\.(js|jsx)$",
    "automock": "true",
    "unmockedModulePathPatterns": [ "lodash" ],
    "transformIgnorePatterns": [
      "node_modules/(?!@exponent/ex-navigation",
      ")"
    ]
  }

我按照提示错误的建议查看了http://facebook.github.io/jest/docs/manual-mocks.html#content

2 个答案:

答案 0 :(得分:1)

我认为你在package.json中的jest配置有问题。

以下是jest配置代码段示例:

"jest": {
    "preset": "react-native",
    "cacheDirectory": "./cache",
    "coveragePathIgnorePatterns": [
      "./app/utils/vendor"
    ],
    "coverageThreshold": {
      "global": {
        "statements": 80
      }
    },
    "transformIgnorePatterns": [
      "/node_modules/(?!react-native|react-clone-referenced-element|react-navigation)"
    ]
  }

预设:预设是一个模仿React Native应用环境的节点环境。因为它不加载任何DOM或浏览器API,所以它大大提高了Jest的启动时间。

cacheDirectory :它可以帮助您大大提高测试速度。它通过创建已编译模块的缓存来实现,以便下次在运行测试时不必编译node_modules。

coveragePathIgnorePatterns :定义要跳过覆盖率报告的文件。

coverageThreshold :定义要传递的所有测试的阈值限制。如果覆盖范围小于定义的限制,则测试将失败。这有助于我们在任何时候保持良好的覆盖率。

transformIgnorePatterns :我们传递了所有需要转换的NPM模块。这些模块基本上是ES6 / 7模块。

PS:我写了一篇关于如何为本机反应项目设置jest的博客。以下是网址:http://rahulgaba.com/react-native/2017/05/19/Jest-test-suite-with-superpowers.html

答案 1 :(得分:0)

在package.json中设置"automock": "false"(使用jest-react-native预设isn't supported进行自动锁定)