2017-10-19 8 views
-1

Ich habe viele Tests, die ordnungsgemäß vor dem Upgrade auf React 16, zusammen mit den jeweiligen Upgrades auf enzime und Scherz funktionieren. Ich folgte the instructions und fügte hinzu, diese beiden Dateien auf den Scherz configs in meinem package.jsonImporte fehlgeschlagen in React 16 Tests mit Enzym und Jest

"jest": { 
    "globals": { 
    "rootLevel": "/portal" 
    }, 
    "moduleNameMapper": { 
    "components": "<rootDir>/../components", 
    "\\.(jpg|jpeg|png|gif|svg|woff|woff2)$": "<rootDir>/_tests/__mocks/fileMock.js" 
    }, 
    "setupFiles": [ 
    "<rootDir>/_tests/__config/shim.js", 
    "<rootDir>/_tests/__config/enzyme-setup.js" 
    ] 
} 

Aber ich sehe immer noch nicht meine Tests richtig läuft. Die meisten meiner Tests einen Fehler identisch dies geworfen:

Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in. 

Check the render method of `WrapperComponent`. 
at invariant (node_modules/fbjs/lib/invariant.js:42:15) 
... 
at mount (node_modules/enzyme/build/mount.js:19:10) 
at Object.<anonymous> (_tests/MyTest.test.js:39:35) 

Alles, was das ausgelöst wurde diese Linie:

const wrapper = mount(<MyComponent {...props} />) 

Soweit ich sagen konnte, mount arbeitet immer noch das gleiche in Enzym 3. Alle meine Tests, bei denen etwas gerendert wird, scheitern. Was vermisse ich?

Antwort

0

Das Problem war, dass ein $ wurde in dem Modulnamen Mapper fehlt:

"components$": "<rootDir>/../components", 
+0

Ich sehe keinen Hinweis auf „Komponenten“ in der URL Sie auf dem Laufenden. Andernfalls sollte diese Datei automatisch mit create-react-app erstellt werden. – HoldOffHunger

Verwandte Themen