-
-
Notifications
You must be signed in to change notification settings - Fork 11
A single endpoint
Pure Krome edited this page Apr 26, 2017
·
8 revisions
What: faking a single request endpoint
Why: unit testing a service that makes a request to one endpoint.
How: Create a fake response for the single endpoint.
Ok - so this is a really simple Unit Test that shows us how to create some fake response, set it in the options, then pass it into our method. Boom - done!
The full code example can be found here.
[Fact]
public async Task GivenSomeValidHttpRequests_GetSomeDataAsync_ReturnsAFoo()
{
// Arrange.
// Fake response.
const string responseData = "{ \"Id\":69, \"Name\":\"Jane\" }";
var messageResponse = FakeHttpMessageHandler.GetStringHttpResponseMessage(responseData);
// Prepare our 'options' with all of the above fake stuff.
var options = new HttpMessageOptions
{
RequestUri = new Uri("https://api.YouWebsite.com/something/here"),
HttpResponseMessage = messageResponse
};
// 3. Use the fake response if that url is attempted.
var messageHandler = new FakeHttpMessageHandler(options);
var myService = new MyService(messageHandler);
// Act.
// NOTE: network traffic will not leave your computer because you've faked the response, above.
var result = await myService.GetSomeFooDataAsync();
// Assert.
result.Id.ShouldBe(69); // Returned from GetSomeFooDataAsync.
result.Baa.ShouldBeNull();
options.NumberOfTimesCalled.ShouldBe(1);
}
- The Basics
- Common 'Happy Path' usages
- Common 'Sad Panda' usages
- Other interesting stuff