public void InvokeSetsLastReponseHeadersAccordingHeadersFromResponse() { // Arrange var mockedResponseMessage = Mock.Create <HttpResponseMessage>(); var mockedRequestHeaders = Mock.Create <HttpRequestHeaders>(); var mockedResponseHeaders = Mock.Create <HttpResponseHeaders>(); Mock.Arrange(() => HttpClient.DefaultRequestHeaders) .IgnoreInstance() .Returns(mockedRequestHeaders) .Occurs(3); Mock.Arrange(() => mockedRequestHeaders.Add(USER_AGENT_KEY, TEST_USER_AGENT)) .OccursOnce(); Mock.Arrange(() => mockedRequestHeaders.TryAddWithoutValidation(ACCEPT_HEADER_KEY, ACCEPT_HEADER_VALUE)) .OccursOnce(); Mock.Arrange(() => HttpClient.GetAsync(Arg.Is(new Uri(URI))).Result) .IgnoreInstance() .Returns(mockedResponseMessage) .OccursOnce(); Mock.Arrange(() => mockedResponseMessage.EnsureSuccessStatusCode()) .OccursOnce(); Mock.Arrange(() => mockedResponseMessage.Headers) .Returns(mockedResponseHeaders) .OccursOnce(); Mock.Arrange(() => mockedResponseMessage.Content.ReadAsStringAsync().Result) .Returns(SAMPLE_RESPONSE_BODY) .OccursOnce(); RestCallExecutor restCallExecutor = new RestCallExecutor(); // Act var result = restCallExecutor.Invoke(HttpMethod.Get, URI, CreateSampleHeaders(), null); // Assert Assert.AreEqual(SAMPLE_RESPONSE_BODY, result); Assert.AreEqual(mockedResponseHeaders, restCallExecutor.GetResponseHeaders()); Mock.Assert(HttpClient); Mock.Assert(mockedRequestHeaders); Mock.Assert(mockedResponseMessage); }