Jest测试运行器中手动模拟的命名约定
Naming conventions for manual mocks in Jest test runner
这是我的项目文件夹结构,
<<p> 文件夹结构/strong>app
- api
- api1
__mocks__
index.js
- index.js
- api2
__mocks__
index.js
- index.js
- components
-component1
- index.js
__tests__
component1.test.js
现在我有component1
内部使用api1
做一些请求。对于当前的文件夹结构和模拟api模块,我面临两个问题。
- 我应该如何命名
api/__mocks__
下的文件?它应该是index.js
(与api1
下的index.js
相同)还是应该是api1.mocks.js
?对于玩笑,是否需要一个命名约定? - 目前的结构jest是扔给我以下错误,
Jest错误:
jest- speed -map:复制手动模拟发现:模块名称:index
是否有一个关于命名mock的文档?
这是我在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"
}
}
简单单元测试:
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(...);
});
});
'是否有关于命名mock的文档?'
是的,文档指定在Manual mocks部分:
手动模拟是通过在紧邻模块的
__mocks__/
子目录中写入模块来定义的。例如,要在models
目录中模拟一个名为user
的模块,请创建一个名为user.js
的文件并将其放在models/__mocks__
目录中。
即 mock的名称应该与模块的名称相同。
'找到重复的手动模拟'
当使用moduleNameMapper
时,文档读取:
映射到别名的模块默认是不模拟的。
我不确定是否Jest不查找mock。
也请不要认为moduleNameMapper
不工作,因为你似乎假设它做。它不会替换路径部分,它会解析从api
到<rootDir>/api
开始的每个require
!(该目录没有任何根文件。)你应该使用ModulePaths。
最新的Jest v17应该会给您更多关于副本的信息。
注意:配置选项enableAutomock
不存在,您是指automock
吗?(或者它根本就不应该在那里?)
注意:与mock的命名约定类似,在__tests__
文件夹内的测试文件通常也保留模块的名称。另一种方法是添加.spec
或.test
后缀,并将测试文件保存在同一文件夹中。在这两种情况下,都很容易找到相应的测试文件。因此,__tests__/index.js
或index.test.js
都是很好的名字。
- JavaScript命名约定;静态“;类或模块
- 命名约定的Web标准
- Javascript中的变量命名约定;jQuery
- 角度模块依赖项的命名约定
- Javascript ES6 的属性和支持值命名约定
- 自定义咕噜声任务命名约定
- Laravel和变量命名约定(蛇格+骆驼格)
- JavaScript事件命名约定
- backbone.js的命名约定(在rails上)
- .NET 商店中的 JavaScript 命名约定
- 如何使用此命名约定验证表单客户端
- Requirejs、jshint 和命名约定
- Javascript 模拟命名约定
- 使用 nodejs 时的 JavaScript 命名约定
- 不是一个正确的命名约定,但它工作正常,如果它有效,命名约定如何以及需要什么
- 在html/css/javascript的命名约定中不使用连字符时
- NPM脚本命名约定
- 用于区分节点JS中模块/实例/方法变量的命名约定
- 本地变量的常规javascript jQuery命名约定是什么
- Jest测试运行器中手动模拟的命名约定