Não é possível usar o resolve.alias para testes do JEST

9

Estou usando o WebPack + React + Jest para meu aplicativo e defini resolve.alias = { app: "/path/to/app" } no meu arquivo de configuração.

No React, posso usar esse caminho para fazer require ("app / component") e obter o arquivo em "/path/to/app/component.js" corretamente.

Ao executar testes do JEST, esse alias não é reconhecido, nem nos testes, nem nos módulos importados. Tudo isso funciona ao executar o aplicativo, mas não aos testes com jest-cli.

    
por gbbr 22.12.2014 в 13:39
fonte

3 respostas

2

jest-cli mora em um mundo separado do Webpack, por isso não funciona dessa maneira.

Use o babel-plugin-module-resolver para lidar com o aliasing.

    
por Juho Vepsäläinen 22.04.2015 / 21:30
fonte
0

Jestpack pode ajudar, pois permitirá que você execute seus testes depois de terem sido construídos com o Webpack.

    
por riscarrott 20.10.2015 / 00:01
fonte
0

Eu uso mocha para testar reagir, mas acho que também funciona por brincadeira.

Você deve usar o pacote 2: falsificar-exigir e < um href="https://www.npmjs.com/package/proxyquire"> proxyquire .

Supondo que você tenha um arquivo js como este:

app.js

import action1 from 'actions/youractions';   

export function foo() { console.log(action1()) }; 

E o seu código de teste deve escrever assim:

app.test.js

import proxyquire from 'proxyquire';
import mockrequire from 'mock-require';

before(() => {
  // mock the alias path, point to the actual path
  mockrequire('actions/youractions', 'your/actual/action/path/from/your/test/file');
  // or mock with a function
  mockrequire('actions/youractions', {actionMethod: () => {...}));

let app;
beforeEach(() => {
  app = proxyquire('./app', {});
});

//test code
describe('xxx', () => {
  it('xxxx', () => {
    ...
  });
});

árvore de arquivos

app.js
  |- test
    |- app.test.js

Primeiro, faça um mock do caminho do alias pelo mock-require em before function e faça um mock do seu objeto de teste por procuração na função beforeEach.

    
por zhaozhiming 14.12.2015 / 11:07
fonte