2016-12-01 4 views
4

Ich habe eine Jest-Testsuite, die nicht ausgeführt werden kann, da die zu testende Komponente von einem RequireJS-Modul abhängt. Hier ist der Fehler ich sehe:"Definieren ist nicht definiert" in Jest beim Testen des es6-Moduls mit RequireJS-Abhängigkeit

FAIL __tests__/components/MyComponent.test.js 
    ● Test suite failed to run 

    ReferenceError: define is not defined 

     at Object.<anonymous> (node_modules/private-npm-module/utils.js:1:90) 

Die Komponente hat die folgenden Import:

import utils from 'private-npm-module'; 

Und die private-npm-module eingerichtet ist wie so:

define('utils', [], function() { 
    return {}; 
}); 

Wenn MyComponent wird transpiled mit babel und im Browser laufen, funktioniert die Abhängigkeit korrekt. Dieses Problem betrifft nur den Komponententest. Wie kann ich meine Testsuite für eine Komponente mit einer RequireJS-Abhängigkeit ausführen lassen?

Ich verwende babel-jest als meine scriptPreprocessor in package.json's jest config. Ich benutze jest v0.15.1.

Antwort

3

Also wird RequireJS nicht von Jest unterstützt. In meinem Fall war es am einfachsten und am besten geeignet, um meine Abhängigkeit an der Spitze der MyComponent.test.js zu verspotten:

jest.mock('private-npm-module',() => { 
    // mock implementation 
}) 

import MyComponent from '../../components/MyComponent'; 

diese Weise, wenn MyComponent geladen wird, wird die Abhängigkeit bereits verspottet, so dass es nicht zu laden, wird versuchen, das RequireJS-Modul.

Wenn Sie wirklich Ihr RequireJS-Modul für Ihren Test laden müssen, ist es möglicherweise möglich, jest's transform configuration zu verwenden, um Ihre Implementierung in einen RequireJS to ES6-Konverter zu verpacken.

Verwandte Themen