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

usando com webpack.

Jest Pode Ser Usado Em Projetos Que Usam网客Para Gerenciar资产,Estilos eCompilação。网客de fatoOFERECE ALGUNS DESAFOS nicosSobre outras Ferramentas,Pois Integra-Se Diretamente Com SuaAplicaçãoPara Permil o Gerenciamento de Estilos,资产Como Imagens E Fontes,Juntamente Com O Ecossistema Expansivo de Ferramentas E Lineagens Para Ser Compiladas EM JavaScript。

嗯presso de webpack

Vamos começar comum tipo comum de arquivo de configuração webpack e traduzi-lo para uma instalação de Jest。

// 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处理变换配置选项。

ManipulaçãodeAsstáticos

现在,我们可以在资产的操作上使用优美的工具,这是我们可以使用的工具。正常情况下,我们知道não são particularmente úteis em testes, por isso podemos com segurança fazer a simulação (mock, em inglês) deles。没有,请você estiver usando CSS模块é melhor simular (mock, em inglês) de um代理para suas pesquisas 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”
}
}
}

E os próprios arquivos de simulação (mock, em inglês):

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

Simulando CSS模块

Você pode usar um代理ES6Para simular(模拟,eminglês)CSS模块

添加 - - - dev identity-obj-proxy

em seguida,Todas As Suas Pesquisas ClassName No Objeto de EstilosSerãoReyornadas ComoSão(POR审查,styles.foobar = = ='foobar')。Istoémuitoútilparateste de snapshot.他们的反应。

// 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”
}
}
}

观察que o代理estáhabilitado没有节点6 porpadrão。sevocêaindanãoestáno node 6,certifique-se de Invocar 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”
}
}
}

nósdissemos para jest ignorar arquivos que recaremam a uma folha de estilo ou em evemuz de Imagem,Em Vez disso,Exigem nossos arquivos desimulação(嘲笑,eminglês)。Vocêpode ajustar aExpressão常规para coincidir com os tipos de arquivo que suaconfiguraçãodo webpack lida。

NOTA:SEvocêestiver usando babel-jest-jest com Pre ProcessadoresAdocionaisdeCódigo,博士Precisa Definir Explicalame Babel-Jest Como UM变换器帕拉O SeuCódigojavascript arquivos。JS.ParaOmódulodabel-jest。

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

configurando jest para encontrar nossos arquivos

Agora Que Jest Sabe Como Processar Nossos Arquivos,PrecisamosInformá-LoComo恩贡埃尔。帕拉阿ModulesDirectoriese为opções deextensoeswebpack存在的análogosdivetos做了jestmoduledirectorieseOpções.modulefileextensions.

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

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

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

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

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

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

Éisso!WebPackéUMAFerramentaClossaEFlexível,EntogoCêPodeTerQue Fazer Alguns Ajustes ParaAtimendsàsespecíficas做Seu Auplicativo。Felizmente,Na Maioria DoS Projetos,Jest Deve SerFlexívelo uffiquee para lidar com suaconfiguraçãodo webpack。

注:Para configurações webpack mais complexas, você pode também querer investigation projects tais como:Babel-Plugin-WebPack-Loaders

Usando com webpack 2

WebPack 2 Oferece Suporte NativoParaMóduloses。但是,Jest在节点中运行,因此需要将es模块转换为companijs模块。因此,如果您使用的是WebPack 2,您最有可能将Babel配置为仅在CompenJS模块中转换为Concovers Modules测试环境。

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

注:Jest armazena em cache os arquivos para acelerar a execução do teste。Se você atualizou .babelrc e Jest ainda não está funcionando, tentar Jest com——no - cache

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

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

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