Unit testing 开玩笑
我试图从运行React示例,但收到错误Unit testing 开玩笑,unit-testing,testing,reactjs,jestjs,Unit Testing,Testing,Reactjs,Jestjs,我试图从运行React示例,但收到错误 λ npm test > ... > jest Found 1 matching tests... FAIL __tests__\CheckboxWithL
λ 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”,()
> unmockedModulePathPatterns: [
> "node_modules\\" + path.sep + "react",
> "node_modules\\" + path.sep + "reflux",
> "node_modules\\" + path.sep + "react-router"
> ],