Ich bin gerade dabei, einen Test für meine App zu erstellen, und habe ein Problem damit, sie in Jest auszuführen. Mein Code Struktur sieht wie folgt aus:Import gibt undefined zurück, anstatt die Komponente beim Testen zu testen.
<pre>
./src/
├── actions
│ ├── departments.js
│ ├── departments.test.js
├── actionTypes
│ ├── departmentsTypes.js
├── components
│ ├── common
│ │ ├── Form
│ │ │ ├── Form.css
│ │ │ ├── FormElement
│ │ │ │ ├── FormElement.css
│ │ │ │ ├── FormElement.js
│ │ │ │ ├── FormElement.test.js
│ │ │ │ └── __snapshots__
│ │ │ ├── Form.js
│ │ │ ├── Form.test.js
│ │ │ ├── index.js
│ │ │ └── __snapshots__
│ │ │ └── Form.test.js.snap
│ │ ├── index.js
│ │ ├── SchemaFormFactory
│ │ │ ├── SchemaFormFactory.js
│ │ │ ├── SchemaFormFactory.test.js
│ │ │ └── __snapshots__
│ │ │ └── SchemaFormFactory.test.js.snap
│ │ └── TextInput
│ ├── DepartmentSelector
│ │ ├── DepartmentSelector.css
│ │ ├── DepartmentSelector.js
│ │ ├── DepartmentSelector.test.js
│ │ ├── index.js
│ │ └── __snapshots__
│ ├── index.js
│ ├── MainApp
│ │ ├── index.js
│ │ ├── MainApp.css
│ │ ├── MainApp.js
│ │ ├── MainApp.test.js
│ │ └── __snapshots__
├── containers
│ ├── DepartmentForm
│ │ └── DepartmentForm.js
│ ├── DepartmentsSearch
│ │ ├── DepartmentsSearch.js
│ │ ├── DepartmentsSearch.test.js
│ │ ├── index.js
│ │ └── __snapshots__
├── helpers
│ └── test-helper.js
├── index.js
├── reducers
│ ├── departments.js
│ ├── departments.test.js
</pre>
und ich versuche, einen Test für FormElement (FormElement.test.js) Komponente auszuführen. Innerhalb Tests habe ich eine Import-Anweisung:
import DepartmentsSearch from '../../../../containers/DepartmentsSearch/DepartmentsSearch'
und mein DepartmentSearch ist ein Container, der aus reagieren-redux Bibliothek verwendet verbinden.
import DepartmentSelector from '../../components/DepartmentSelector/DepartmentSelector'
import {createDepartment} from '../../actions'
const mapStateToProps = (state) => {
return {
departments: state.departments
}
}
export default connect(mapStateToProps, {createDepartment})(DepartmentSelector)
Aus irgendeinem Grund import DepartmentSelector
statt reagieren Komponente undefined zurück (es ist nur ein dummer Komponente kein Container). Das Seltsamste ist, dass dies nur passiert, wenn Tests ausgeführt werden, nicht wenn Code im Browser ausgeführt wird. Ich habe am Anfang versucht, Importe auf höchster Ebene zu verwenden, aber es scheiterte auch.
Ich habe keine anderen Ideen, warum es nur beim Testen scheitern könnte und würde mich freuen, wenn mir jemand in die richtige Richtung zeigen könnte.
'DepartmentSearch' zu importieren ist ein Container, der' DepartmentSelector' mit einem Teil der 'redux' Zustands- und Aktions Schöpfer verbessern. Es sollte nicht gerendert werden, weil 'DepartmentSelector' hat. Und wie ich schon sagte, es ist kein Problem mit dem Code selbst, sondern mit dem Test, weil der ganze Code in einem Browser gut ausgeführt wird. Nur beim Ausführen von Tests habe ich einen Fehler "Invariant Violation": Sie müssen eine Komponente an die von connect zurückgegebene Funktion übergeben. Stattdessen erhalten undefined. – piro