To, co se snažím, je otestovat, zda složka, která závisí na kontextu, volání useEffect
a funkci (smích jest.fn()
) je volána z tu.
Zde je zjednodušená verze mého kódu:
MyComponent.tsx
export function MyComponent() {
const ref = createRef();
const { date } = useMyContext(); // "date" is a string (e.g. `2021-11-01`)
useEffect(() => {
if (date && ref.current)
ref.current.scrollIntoView();
}, [date, ref]);
return (
<div>
{/* some other elements are here */}
<AnotherComponent ref={ref} />
</div>
);
}
MyComponent.test.tsx
it('should scroll into AnotherComponent when date is updated', () => {
const mockContextValue = { date: '2021-11-01' };
window.HTMLElement.prototype.scrollIntoView = jest.fn();
render(
<MyContext.Provider value={mockContextValue}>
<MyComponent />
</MyContext.Provider>,
);
// update the date in MyContext.Provider
// then, useEffect should be called
// then, expect scrollIntoView was called
});
Jsem bezradný, jak se
- aktualizovat
date
hodnota vMyContext
poMyComponent
je vykreslen pomocí vykreslení funkce@testing-library/react
- uvidíme, jestli
useEffect
bylo voláno podate
byl aktualizován
Byl jsem googling pro hodiny a hodiny, ale nenašel jsem žádné řešení. Jakákoliv rada bude vítána.