功能问题需要使用Jest进行上下文测试

时间:2018-09-14 07:07:38

标签: javascript reactjs testing jestjs

我正在尝试用Jest测试React。组件从映射所有组件的索引文件中导入其他组件,该文件使用了jest不喜欢的require.context函数。我试图提出一种解决方案,将需求模拟到索引文件,但是我在使它工作方面遇到问题。

TypeError:require.context不是函数

> 1 | const req = require.context(".", true, /\.\/[^/]+\/[^/]+\/index\.js$/);

索引文件:

const req = require.context(".", true, /\.\/[^/]+\/[^/]+\/index\.js$/);

req.keys().forEach(key => {
  const componentName = key.replace(/^.+\/([^/]+)\/index\.js/, "$1");
  module.exports[componentName] = req(key).default;
});

我这样导入组件:

import { AuthFormWrapper, Button } from '../../../components';

玩笑配置中的moduleNameMapper选项:

"moduleNameMapper": {
      "^components$": "<rootDir>/__tests__/setup/__mocks__/componentMock.js"
    },

模拟组件文件:

import React from 'react'
import PropTypes from 'prop-types'

module.exports = new Proxy({}, {
    get: (target, property) => {
        const Mock = props => <span>{props.children}</span>;

        Mock.displayName = property;
        Mock.propTypes = {
            children: PropTypes.any,
        };

        return Mock
    },
});

0 个答案:

没有答案