无法获得模拟元数据

时间:2016-01-18 04:04:28

标签: javascript reactjs jestjs

运行jest并收到错误,不知道如何处理它。

MenuSpec.js

//MenuSpec.js
var Menu = require('../../src/menu.js');
jest.dontMock( "menu" );

describe("Menu", function() {


    beforeEach(function() {
        menu = new Menu();
    });
});

特别是这个错误

Error: Failed to get mock metadata: /Users/anthonydreessen/Documents/workspace-sts-3.7.2.RELEASE/parrit/node_modules/react/lib/canDefineProperty.js
    at Loader._generateMock (/Users/anthonydreessen/Documents/workspace-sts-3.7.2.RELEASE/parrit/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:251:15)

项目结构

/js
  /__tests__
    /menu
      MenuSpec.js
  /src
    menu.js

2 个答案:

答案 0 :(得分:1)

在你的package.json中,将其添加到你的jest配置中。

"jest": {
  "unmockedModulePathPatterns": [
    "<rootDir>/node_modules/react"
  ]
}

根据您使用的其他模块,您可能还需要包含它们。

"jest": {
  "unmockedModulePathPatterns": [
    "<rootDir>/node_modules/react",
    "<rootDir>/node_modules/react-dom",
    "<rootDir>/node_modules/react-addons-test-utils",
    "<rootDir>/node_modules/fbjs"
  ]
}

答案 1 :(得分:0)

Jest试图模仿React,它不应该。

使用config参数unmockedModulePathPatterns告诉Jest unmock React

其次,您必须在之前取消模拟模块:

jest.dontMock( "../../src/menu" );
var Menu = require('../../src/menu');