17

I'm testing my react components and I want to mock several get operations. What I want to do is something like:

test(`Created correctly`, async () => {
    fetchMock.get(`*`, JSON.stringify(FIRSTGETOBJ));
    fetchMock.get(`*`, JSON.stringify(SECONDGETOBJ));
    fetchMock.get(`*`, JSON.stringify(THIRDGETOBJ));

    //...
}

The url for each get is the same, but the payload changes. However, using the code above I will get:

Error: Adding route with same name as existing route. See `overwriteRoutes` option.

How can I do this?

justHelloWorld
  • 6,478
  • 8
  • 58
  • 138

1 Answers1

20

Use overwriteRoutes option

test(`Created correctly`, async () => {
    fetchMock.get(`*`, JSON.stringify(FIRSTGETOBJ));
    fetchMock.get(`*`, JSON.stringify(SECONDGETOBJ), { overwriteRoutes: false });
    fetchMock.get(`*`, JSON.stringify(THIRDGETOBJ), { overwriteRoutes: false });

    //...
}
Hatch
  • 688
  • 8
  • 8
  • 2
    For me (fetch-mock@9.5.0), I had to include `{ repeat: 1 }` in each of the mock options - otherwise it would continue to give me the first result. – Tyler Murry May 08 '20 at 02:36