I'm new to unit testing and I'm trying to render a component to learn more about the library.
I'm trying to follow this guide.
Component
<TouchableOpacity
style={style}
onPress={onPress}
accessibilityRole="button"
>
<AppText style={textStyle}>{title.toUpperCase()}</AppText>
</TouchableOpacity>
Test
it("Has the correct title in the button", () => {
const { getByText } = render(<AppButton title="Hello" />);
expect(getByText("HELLO")).toBeInTheDocument();
});
I'm simply trying to see that the component renders correctly but I get the error
received value must be an HTMLElement or an SVGElement.
Received has type: object
Received has value: {"_fiber": {"_debugHookTypes": null, "_debugID": 40, "_debugIsCurrentlyTiming": false, "_debugNeedsRemount": false, "_debugOwner": [FiberNode], "_debugSource": null, "actualDuration": 0, "actualStartTime": -1, "alternate": null, "child": [FiberNode], "childExpirationTime": 0, "dependencies": null, "effectTag": 1, "elementType": [Function Component], "expirationTime": 0, "firstEffect": null, "index": 0, "key": null, "lastEffect": null, "memoizedProps": [Object], "memoizedState": null, "mode": 0, "nextEffect": null, "pendingProps": [Object], "ref": null, "return": [FiberNode], "selfBaseDuration": 0, "sibling": null, "stateNode": [Component], "tag": 1, "treeBaseDuration": 0, "type": [Function Component], "updateQueue": [Object]}}
Any advice on what I'm doing wrong?
getByText
, at least it's working. :) – MaterialfindBy
which returns a promise -await expect(findBy(...)).resolves.toBeInTheDocument()
– Hyp