I am new to useSWR, and I have to fetch a list of items calling some endpoint which returns paginated response
const listItems = (id: String) => {
const [nextToken, setNextToken] = useState(undefined);
const [items, setItems] = useState([]);
const input = useMemo(() => {
return { id, nextToken }
,[nextToken]);
const data = useSWR('listItems', promisify(listItems(input)));
useEffect(() => {
if (!data) return;
setItems(items.concat(data.items));
setNextToken(data.nextToken);
}, [data]);
return {
items
};
}
In the test file, I mock listItems as follows
mockListItems
.mockImplementationOnce(() => {
promise: () => Promise.resolve(item1)
})
.mockImplementationOnce(() => {
promise: () => Promise.resolve(item2)
})
However, the test fails because it only returns item1. What went wrong here?