Aja*_*jai 5 javascript unit-testing reactjs jestjs enzyme
这是我的项目文件夹结构,
文件夹结构
app
- api
- api1
__mocks__
index.js
- index.js
- api2
__mocks__
index.js
- index.js
- components
-component1
- index.js
__tests__
component1.test.js
Run Code Online (Sandbox Code Playgroud)
现在我有component1内部api1用来做一些请求.我目前的文件夹结构和模拟api模块有两个问题.
api/__mocks__?它应该是index.js(同为index.js下api1),或者它应该是api1.mocks.js?是否有开玩笑所需的命名约定?开玩笑错误:
jest-haste-map:找到重复的手动模拟:模块名称:索引
有没有关于命名模拟的文档?
这是我在package.json中的jest配置,
的package.json:
"jest": {
"testEnvironment": "jsdom",
"testPathDirs": [
"<app-path>"
],
"modulePaths": [
"<app-path>"
],
"enableAutomock": true,
"moduleNameMapper": {
"^components": "<rootDir>/components",
"^services": "<rootDir>/services",
"^api": "<rootDir>/api",
"^.+\\.less$": "<rootDir>/__mocks__/styleMocks.js"
}
}
Run Code Online (Sandbox Code Playgroud)
简单的单元测试:
import React from 'react';
import {mount} from 'enzyme';
import Component from 'components/Component1';
jest.mock('api/api1');
describe('Component1 Unit tests', () => {
it('Should render', () => {
const c1 = mount(
<Component1 />
);
expect(...);
});
});
Run Code Online (Sandbox Code Playgroud)
是的,文档在手动模拟部分指定:
\n\n\n\n\n\n
__mocks__/手动模拟是通过在紧邻模块的子目录中编写模块来定义的。例如,要模拟目录user中调用的模块models,请创建一个名为的文件user.js并将其放入models/__mocks__目录中。
也就是说,模拟的名称应该与模块的名称相同。
\n\n使用文档时moduleNameMapper请阅读:
\n\n\n默认情况下,映射到别名的模块是未模拟的。
\n
我不确定 Jest 是否不会以任何方式寻找模拟。
\n\n另请注意,这moduleNameMapper并不像您想象的那样起作用。它不会替换路径部分,它会解析每个require以 例如 开头api的<rootDir>/api! (这没有任何根文件。)。您应该使用ModulePaths代替。
最新的Jest v17 应该会为您提供有关重复项的更多信息。
\n\n注意:配置选项enableAutomock 不存在,您的意思是automock?(或者它根本不应该存在?)
注意:与模拟的命名约定类似,__tests__文件夹内的测试文件通常也保留模块的名称。另一种方法是添加.spec或.test添加后缀并将测试文件保留在同一文件夹中。在这两种情况下都很容易找到相应的测试文件。因此__tests__/index.js或index.test.js会是好名字。
| 归档时间: |
|
| 查看次数: |
2232 次 |
| 最近记录: |