J. *_*ers 7 javascript unit-testing reactjs jestjs react-testing-library
我想用 Jest 和 测试我的 Expo React Native 应用程序@testing-lib/react-native
。
我在我的package.json
.
"jest": {\n "preset": "jest-expo",\n "moduleDirectories": [\n "node_modules",\n "test-utils"\n ]\n },\n
Run Code Online (Sandbox Code Playgroud)\n\n我的文件夹结构如下所示:
\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80node_modules/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80test-utils/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80src/\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80package.json\n
Run Code Online (Sandbox Code Playgroud)\n\nsrc/
包含测试文件。我正在通过以下简单测试来测试我的配置src/index.test.js
:
"jest": {\n "preset": "jest-expo",\n "moduleDirectories": [\n "node_modules",\n "test-utils"\n ]\n },\n
Run Code Online (Sandbox Code Playgroud)\n\nassert
位于何处test-utils/index.js
:
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80node_modules/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80test-utils/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80src/\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80package.json\n
Run Code Online (Sandbox Code Playgroud)\n\n如果我运行测试,我会收到错误:
\n\nCannot find module \'test-utils\' from \'index.test.js\'\n
Run Code Online (Sandbox Code Playgroud)\n\n这是为什么?我的意思是我已经配置了moduleDirectories
密钥?你该如何解决这个问题?我真的很希望能够assert
作为绝对路径而不是相对路径导入。
我找到了解决方案。目前的文档很糟糕。
\n\n如果你有这个文件夹结构
\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80node_modules/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80src/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80utils/\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80package.json\n
Run Code Online (Sandbox Code Playgroud)\n\n然后你想像这样命名你的模块目录:
\n\n"jest": {\n "preset": "jest-expo",\n "setupFilesAfterEnv": [\n "@testing-library/react-native/cleanup-after-each"\n ],\n "moduleDirectories": [\n "node_modules",\n "utils"\n ]\n},\n
Run Code Online (Sandbox Code Playgroud)\n\n然后在utils/
你想要的.js
文件中test-utils.js
。test-utils
然后您可以在测试中导入。
因此,关键是导出的模块的名称必须是文件的名称.js
。并且您放入的文件夹moduleDirectories
必须包含此.js
文件。
归档时间: |
|
查看次数: |
4858 次 |
最近记录: |