【问题标题】:Failed to get mock metadata获取模拟元数据失败
【发布时间】:2016-01-18 04:04:27
【问题描述】:

运行 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/[me]/Documents/workspace-sts-3.7.2.RELEASE/parrit/node_modules/react/lib/canDefineProperty.js
    at Loader._generateMock (/Users/[me]/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

【问题讨论】:

    标签: javascript reactjs jestjs


    【解决方案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"
      ]
    }
    

    【讨论】:

    • 我只能使用模块名称。也许这是最近的变化? “开玩笑”:{“unmockedModulePathPatterns”:[“反应”]}
    【解决方案2】:

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

    使用配置参数unmockedModulePathPatterns 告诉Jest unmock React

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-02
      • 2011-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多