Setup für React Native/TypeScript/Testing Library/Jest funktioniert nicht
Ich versuche, eine React Native/TypeScript-Anwendung so einzurichten, dass sie mit Jest und @testing-library/react-native getestet werden kann;
Bisher erhalte ich diesen Fehler:
Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: object.
Früher bekam ich einen Missing class properties transform-Fehler, also habe ich @babel/plugin-proposal-class-properties zur Babel-Konfiguration hinzugefügt, die bereits beim ursprünglichen Bootstrapping mit expo init enthalten war, aber sobald ich das tue, bekomme ich diesen anderen Fehler, und nichts, was ich bisher versucht habe, funktioniert.
Das ist meine Babel-Konfiguration:
module.exports = function(api) {
api.cache(true);
return {
presets: [
"babel-preset-expo",
["@babel/preset-env", { targets: { node: "current" } }],
"@babel/preset-typescript"
],
plugins: ["@babel/plugin-proposal-class-properties"]
};
};
und meine Jest-Konfiguration:
"jest": {
"preset": "react-native"
}
Der Bruchtest:
import React from "react";
import App from "../App";
import { render } from "@testing-library/react-native";
describe("App", () => {
it("renders", () => {
const { container: received } = render(<App />);
expect(received).toMatchSnapshot();
});
});
Bitte beachten Sie, dass ich einige Zeit damit verbracht habe, verschiedene Kombinationen von Presets/Plugins/Configs auszuprobieren, sodass dies möglicherweise nicht die ideale Konfiguration ist. Ich versuche herauszufinden, ob es eine tatsächliche Einschränkung dieses spezifischen Stacks gibt, den ich gewählt habe (bisher konnte ich kein genaues, aktuelles Beispiel finden, das genau diesen Stack verwendet), eine Fehlkonfiguration oder einen tatsächlichen Fehler, den ich melden sollte. Ich weiß auch nicht, zu welchem Paket der Fehler - falls überhaupt - tatsächlich gehört. Sollte ich ihn bei Jest melden? Oder bei React Native? Oder bei Babel? Oder bei Testing Library?
Jegliche Hilfe wäre sehr willkommen.
Danke!