跳到主要内容
版本:26.x.

Utilizando webpack.

Jest Puede Ser Usado en Proyectos Que UsanwebpackPara gestionar recursos,estilos ycompilación。网客OFERECE.Algunosdesafíosúnicossobre otras herramientas porquientas porquience senta directamente con suaplicaciónparapmerir lagestióndehajasde estilo,recensos comoimágenesy fuentes,junto con El Extenso Ecosistema de lenguajes y Herramientas deCompilaciónajavascript。

联合国ejemero de webpack

Vamos a comenzar con en tipocomúndeachivodeconfiguraciónwebpack y traducirlo a unaconfiguracióndejest。

// webpack.config.js.
模块 出口 = {
模块 {
装载机 [
{ 排除 [ 'node_modules' ] 装载机 “巴别塔” 测试 / \ .jsx?$ / }
{ 装载机 '风格装载机!CSS-Loader' 测试 / \ .css $ / }
{ 装载机 'URL-Loader' 测试 / \ .gif $ / }
{ 装载机 “file-loader” 测试 / \。(ttf | EOT | SVG)$ / }
]
}
解决 {
别名 {
配置美元 './configs/app-config.js'
反应 './vendor/reacont-master'
}
延期 [ '' 'js' 'JSX' ]
模块 [
'node_modules'
'bower_components'
“共享”
'/共享/供应商/模块'
]
}
} ;

如果您有Babel转换的JavaScript文件,您可以支持对Babel的支持通过安装Babel-Jest.插件。非babel JavaScript转换可以用Jest处理变换配置选项。

Manejo de ActivosEstáticos

一个Continuación,Vamos A Configurar Jest Para Utilizar Archivos Como Hojas de Estilo EImágenes。展会,estos archivos没有儿子特定theten en las pruebas por lo que con seguridad podemos mockearlos。SIN Embargo,Si Utilizamódulosde CSS entonces es emor mockear联合国代理paralasbúsquedasde classname。

// package.json.
{
“开玩笑” {
“modulenamapper” {
“\\。(JPG | JPEG | PNG | GIF | EOT | OTF |网页| SVG | TTF | WOFF | WOFF2 | MP4 | WAV | MP3 | MP3 | MP1 | AAC | OGA)$” / __模拟__ / filemock.js”
“\\。(CSS |少)$” / __模拟__ / stylemock.js”
}
}
}

Y Mockear LOS ARCOVOS预言:

// __mocks __ / stylemock.js
模块 出口 = { } ;
// __mocks __ / filemock.js
模块 出口 = “test-file-stub” ;

模型Modulos de CSS

Puede Utherizar联合国ES6代理帕拉模仿Modulos de CSS

添加 - - - dev identity-obj-proxy

一个连续的volvolverántadasttustusbúsquedasde classname del objeto estilos como(ej。,风格。foobar = = =“foobar”)。Esto es bastante útil para React快照测试

// package.json(对于CSS模块)
{
“开玩笑” {
“modulenamapper” {
“\\。(JPG | JPEG | PNG | GIF | EOT | OTF |网页| SVG | TTF | WOFF | WOFF2 | MP4 | WAV | MP3 | MP3 | MP1 | AAC | OGA)$” / __模拟__ / filemock.js”
“\\。(CSS |少)$” “Identity-Obj-Proxy”
}
}
}

Aviso Que ProxyEstáHabilitadoen Node 6 Por Defecto。Siaúnno estas ultizando节点6,asegúratedequeIntocas jest usando节点--harmony_proxies node_modules / .bin / jest

如果moduleNameMapper无法满足您的要求,您可以使用jest的要求变换配置选项以指定如何转换资产。例如,返回文件的基本名的变形式器(例如需要('logo.jpg');回报'标识')可以写作:

// filetransformer.js.
const 小路 = 要求 '小路' ;
模块 出口 = {
过程 src 文件名 配置 选项 {
返回 'module.exports =' + 杰森 stringify 小路 basename 文件名 + “;” ;
}
} ;
// package.json(用于自定义变换器和CSS模块)
{
“开玩笑” {
“modulenamapper” {
“\\。(CSS |少)$” “Identity-Obj-Proxy”
}
“转变” {
“\\。(JPG | JPEG | PNG | GIF | EOT | OTF |网页| SVG | TTF | WOFF | WOFF2 | MP4 | WAV | MP3 | MP3 | MP1 | AAC | OGA)$” /filetransformer.js”
}
}
}

如果你对我说的关于巧合的笑话是在extensión你的想象,你的想象相反,你的嘲笑必须是真实的。我们可以在expresión在configuración webpack的archivos上的规则对偶巧合。

NOTA:SI Uteriza Babel-JET-JEST CONEDESADORES deCódigoadicional,Debe DefinirExplicícitamentabel-jest como联合国变换器Para ElCódigojavascript y Asignar Archivos. jsen elmódulode babel-jest。

“转变” {
“\\。JS $” “babel-jest”
“\\。CSS $” “自定义变压器”
......
}

Configurar Jest Para Que Encuentre Nuestro Archivos

Ahora que jest sabecómoprocesar nuestro archivos,tenemos que decirelecómoencontrarlos。parModulesDirectoriesde webpack y延期allí las opciones儿子análogos笑话指南moduledirectoriesymodulefileextensions.

// package.json.
{
“开玩笑” {
“modulfileextensions” [ “js” “JSX” ]
“moduledirectories” [ “node_modules” “bower_components” “共享” ]
“modulenamapper” {
“\\。(CSS |少)$” / __模拟__ / stylemock.js”
“\ \ (gif。| ttf |测试结束| svg) $” / __模拟__ / filemock.js”
}
}
}

笔记:< rootDir >是一个特殊的令牌,它与您的项目根目录被Jest替换。大多数时间这将是你的文件夹package.json.位于,除非您指定自定义rootdir.配置中的选项。

同样地,网客resolve.root选项功能(如设置)NODE_PATHenv变量,您可以设置,或使用Modulepaths.选择。

// package.json.
{
“开玩笑” {
“modulepaths” [ “/共享/供应商/模块” ]
“modulfileextensions” [ “js” “JSX” ]
“moduledirectories” [ “node_modules” “bower_components” “共享” ]
“modulenamapper” {
“\\。(CSS |少)$” / __模拟__ / stylemock.js”
“\ \ (gif。| ttf |测试结束| svg) $” / __模拟__ / filemock.js”
}
}
}

最后,我们必须处理网袋别名。为此,我们可以利用moduleNameMapper选择再次。

// package.json.
{
“开玩笑” {
“modulepaths” [ “/共享/供应商/模块” ]
“modulfileextensions” [ “js” “JSX” ]
“moduledirectories” [ “node_modules” “bower_components” “共享” ]
“modulenamapper” {
“\\。(CSS |少)$” / __模拟__ / stylemock.js”
“\ \ (gif。| ttf |测试结束| svg) $” / __模拟__ / filemock.js”
“^反应(。*)$” /供应商/反应 - 掌握1美元”
“^配置美元” “< rootDir > /配置/ app-config.js”
}
}
}

¡Eso es待办事项!¡Eso es待办事项!webPack是一个灵活的系统,网址是tendrás它可以调节你的身体和身体需要的东西específicas你的aplicación。你可以访问mayoría你的网站,你可以访问你的网站configuración webpack。

NOTA:ParaLasmásComplejasConfiguraciones Webpack,TambiénPuedesInvestgar Proyectos Tales Como:Babel-Plugin-WebPack-Loaders

Utilizando webpack 2.

webPack 2 ofrece soporte nativo para los módulos de ES。然而,Jest运行在Node中,因此需要将ES模块编译为CommonJS模块。因此,如果你使用的是webpack 2,你很可能需要配置Babel来将ES模块编译成CommonJS模块测试环境。

// .babelrc.
{
“预设” [ [ “env” { “模块” 错误的 } ] ]
“env” {
“测试” {
“插件” [ “Transform-ES2015-Modules-CommonJs” ]
}
}
}

注:我希望你能在ejecución的测试中加速。如果你知道这个笑话,你就会把它当作笑话来讲——no - cache

如果使用动态导入(导入('某些文件.js')。然后(模块=> ......)),您需要启用动态导入节点插件。

// .babelrc.
{
“预设” [ [ “env” { “模块” 错误的 } ] ]
“插件” [ “语法 - 动态导入” ]
“env” {
“测试” {
“插件” [ “动态导入节点” ]
}
}
}

有关如何使用JEST与WebPack的Jest与React,Redux和Node一起使用的示例,您可以查看一个在这里