Mocking Rest API endpoint

Does anyone have a recommendation on mocking a Rest API endpoint with Pester? I have a number of modules that use invoke-restmethod to consume Rest APIs and am able to unit test a function with something like this:

Mock -CommandName Invoke-RestMethod -Parameters { $PSBoundParameters.body -eq '{"submit1": "A Value"}'} -MockWith { return (convertfrom-json '{"return1": "Some value"}') }

This works well for making sure a function sends the correct data to Invoke-RestMethod and processes the expected results, but it depends upon knowing how the function was implemented internally; i.e. the function can’t be changes to use Invoke-WebRequest without changing all the Mocks and tests.

I am thinking that if I was able to mock the web response, rather than the Invoke-RestMethod or Invoke-WebRequest, unit testing would be more effective, but I haven’t been able to figure out a good way to the that with Pester.

I would say whatever you have now is the best possible, mocks are for mocking cmdlet/functions and you are in a way mocking the web response.

Hi
I may try to create a helper function to handle invoke-restmethod across your module. This mean less code to handle error processing, you can have your own logic to process queries and it’s easier to mock.