Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 开玩笑_Unit Testing_Testing_Reactjs_Jestjs - Fatal编程技术网

Unit testing 开玩笑

Unit testing 开玩笑,unit-testing,testing,reactjs,jestjs,Unit Testing,Testing,Reactjs,Jestjs,我试图从运行React示例,但收到错误 λ npm test > ... > jest Found 1 matching tests... FAIL __tests__\CheckboxWithL

我试图从运行React示例,但收到错误

λ npm test                                          

> ...                           
> jest                                              

Found 1 matching tests...                           
 FAIL  __tests__\CheckboxWithLabel-test.js (0.551s) 
npm ERR! Test failed.  See above for more details.  
npm ERR! not ok code 0   
我几乎直接从示例中复制了代码。package.json如下所示:

{
  "dependencies": {
    "react": "*",
    "react-tools": "*"
  },
  "scripts":{
    "test": "jest"
  },
  "jest": {
    "scriptPreprocessor": "<rootDir>/preprocessor.js",
    "unmockedModulePathPatterns": [
      "<rootDir>/node_modules/react"
    ]
  },
  "devDependencies": {
    "jest-cli": "~0.1.17"
  }
}
{
“依赖项”:{
“反应”:“*”,
“反应工具”:“*”
},
“脚本”:{
“测试”:“开玩笑”
},
“笑话”:{
“scriptPreprocessor”:“/preprocessor.js”,
“unmockedModulePathPatterns”:[
“/node\u模块/react”
]
},
“依赖性”:{
“jest cli”:“~0.1.17”
}
}
对于如何解决这些错误并成功运行示例测试,我有什么想法吗?很可能我遗漏了一个重要的细节,但不完全确定是什么。哦,不管它值多少钱,我在Windows上运行它,如果这会影响它的话。我真的很想对我的react组件进行一些测试(在那里也遇到了一些问题,所以从基本示例开始)--任何帮助都将不胜感激:)

应替换为实际路径。看起来您没有要从中开始的子目录,而在某些情况下,您可能只希望在
src/
路径中运行测试,因此您的package.json看起来更像这样:

{
  ...
  "jest": {
    "rootDir": "src",
    "scriptPreprocessor": "../jest/preprocessor.js" // Note: relative to src
  }
  ...
}
我在他们的github页面上创建了一个。正在等待查明这是否是与windows相关的问题

同时,通过只指定模块的名称而不是相对路径,最终使其工作

"unmockedModulePathPatterns": ["react"]

对于任何在这里搜索这个问题的人来说,@ron的github问题最终得到了解决,结论是UnmackedModulePathPatterns需要一个匹配文件路径的正则表达式数组,而不一定是文件路径本身。这就是为什么使用“相对”路径有效。从Jest API文档:

与所有参数匹配的regexp模式字符串数组 模块加载器之前的模块将自动为返回模拟 他们。如果模块的路径与此列表中的任何模式匹配,则 不会被模块加载程序自动模拟

这对于一些常用的“实用程序”模块非常有用,这些模块是 几乎始终用作实现细节(如 下划线/低破折号等)。这通常是保持这种状态的最佳实践 列表尽可能小,并始终使用显式 在单独的测试中调用jest.mock()/jest.dontMock()。明确的 对于测试的其他读者来说,每次测试设置要容易得多 关于测试将在其中运行的环境

可以通过以下方式在单独测试中覆盖此设置: 在测试文件顶部显式调用jest.mock()

()

从问题本身来看:

Jest在内部使用UnmockedModulePathPathPatterns来创建 将测试所有必需模块的RegExp。因此,你 需要提供有效的正则表达式模式。例如,这很有效 对我来说:

  • “mlarcher”,()

我尝试用实际路径更改根目录,但它仍然不起作用。可能是相关的,但我只是让测试正常工作,并开始添加其他代码。一旦我得到任何require语句,它就会失败。我基本上使用了上面package.json中的代码(以及您建议的更改),我发现了同样的问题。这里有一个错误,我在调试时看到了这个错误。在要求React时-ReactCompositeComponent.js:无法读取未定义的属性“DEFINE\u MANY”。在本例中,Jest似乎忽略了未修改的ModulePathPatters。看来与此有关。也许是windows的问题?今晚我将创建一个Ubuntu Vagrant映像,并在那里尝试这个基本测试。这听起来和你提到的问题非常相似。谢谢你弄明白了这一点。也谢谢你把这个问题抛到笑话问题跟踪器上。除非有人抢先一步,否则我会对调查结果提出质疑:)
> unmockedModulePathPatterns: [
>       "node_modules\\" + path.sep + "react",
>       "node_modules\\" + path.sep + "reflux",
>       "node_modules\\" + path.sep + "react-router"
>     ],