Estou tentando um teste simples de instantâneo. O componente que estou testando usa outro componente de um módulo. O teste falha ao tentar importar este módulo desbloqueado com:
Fracasso
Using Jest CLI v14.1.0, jasmine2, babel-jest, jest-react-native preset
FAIL js/app/SetupView/__tests__/SetupView-test.js (0s)
Runtime Error
- SyntaxError: Unexpected reserved word
at transformAndBuildScript (../../../../../usr/local/lib/node_modules/jest-cli/node_modules/jest-runtime/build/transform.js:306:10)
at Object.<anonymous> (js/app/SetupView/index.js:12:17)
at Object.<anonymous> (js/app/SetupView/__tests__/SetupView-test.js:11:12)
1 test suite failed, 0 tests passed (0 total in 1 test suite, run time 2.419s)
Teste
'use strict';
import 'react-native';
import React from 'react';
import SetupView from '../index';
import renderer from 'react-test-renderer';
describe('SetupView', ()=> {
it('renders correctly', ()=>{
const tree = renderer.create(
<SetupView/>
).toJSON();
expect(tree).toMatchSnapshot();
})
});
Componente SetupView
'use strict';
import React from 'react';
import {
View,
Text,
TouchableHighlight,
Image,
Animated,
} from 'react-native';
import DataContainer from 'react.datacontainer'; //<---fails here
import DashboardSettings from './DashboardSettings';
.
.
.
package.json
"jest": {
"globals": {
"__DEV__": true
},
"collectCoverage": false,
"verbose": true,
"preset": "jest-react-native",
"modulePathIgnorePatterns": [
"node_modules/react-native/node_modules/yeoman-generator",
"node_modules/react-native/node_modules/fbjs"
],
"unmockedModulePathPatterns": [
"react.datacontainer",
"react.data",
"react.base.theme",
"react.layout"
]
}
Para sua informação, tenho um arquivo .babelrc em meu diretório raiz apontando para a predefinição react-native e o teste é executado, mas falha se eu comentar a linha 12, já que DataContainer
é indefinido.
Você pode tentar jest --no-cache
? Se você alterou seu babelrc antes da última invocação, podemos não atualizar o cache adequadamente.
Se isso não funcionar, crie um repositório no github para que eu possa instalar o npm e testar o npm para solucionar o problema.
Dica: você não precisa desbloquearModulePathPatterns ao usar o react-native-preset porque o automocking será desabilitado de qualquer maneira.
Isso não funcionou para mim. Parece que o problema está na importação do node_module react.datacontainer
. Depois de aprofundar um pouco mais, acredito que a predefinição de brincadeira não é compilar os node_modules escritos em es6.
Infelizmente, não posso criar um repositório no momento. Mas se ajudar ainda mais, aqui está a aparência do módulo 'react.datacontainer'. https://github.com/ForceDotComLabs/react.force.datacontainer
Você pode habilitar o pré-processamento para este módulo por meio desta opção de configuração: http://facebook.github.io/jest/docs/tutorial-react-native.html#preprocessorignorepatterns -customization
Se desejar, você também pode criar um problema na página do github deste projeto para solicitar que pré-compilem suas dependências e publiquem arquivos de construção no npm.
Comentários muito úteis
Você pode tentar
jest --no-cache
? Se você alterou seu babelrc antes da última invocação, podemos não atualizar o cache adequadamente.Se isso não funcionar, crie um repositório no github para que eu possa instalar o npm e testar o npm para solucionar o problema.
Dica: você não precisa desbloquearModulePathPatterns ao usar o react-native-preset porque o automocking será desabilitado de qualquer maneira.