how to mock async await function in jest code example

Example: jest async test fetch api

// fetch.js
async function fetchUser() {
  const url = 'https://jsonplaceholder.typicode.com/users'
  const response = await fetch(url)
  return await response.json()
}

const fetchPosts = {
   async postAPI() {
   const url = 'https://jsonplaceholder.typicode.com/posts'
   const response = await fetch(url)
   return await response.json()
  }
}


// fetch.test.js
test('async fetch action users', async (done) => {
  const response = await fetchUser()
  expect(response.length).toBe(10);
  done()
});

test('async fetch action posts using Jetst Spy', async (done) => {
   const spyOn = jest.spyOn(fetchPosts, 'postAPI')
   const response = await fetchPosts.postAPI()
   expect(spyOn).toHaveBeenCalled()
   expect(response.length).toBe(100);
   done()
})