public void CheckLinksWithResultsAsync_TwoLinksInPageForUri_OneOkTheOtherBad(string elementId) { // arrange var mainPageUri = new Uri("https://dummy.com/"); string okLink = "https://ok.com/"; string notFoundLink = "https://notfound.com/"; var mockHttpMessageHandler = new Mock <HttpMessageHandler>(); mockHttpMessageHandler.Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.Is <HttpRequestMessage>(hrh => hrh.RequestUri.OriginalString == mainPageUri.ToString()), ItExpr.IsAny <CancellationToken>()) .ReturnsAsync(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = GetHtmlWithTwoLinksInside(elementId, okLink, notFoundLink) }); mockHttpMessageHandler.Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.Is <HttpRequestMessage>(hrh => hrh.RequestUri.OriginalString == okLink), ItExpr.IsAny <CancellationToken>()) .ReturnsAsync(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent("some text.."), RequestMessage = new HttpRequestMessage(HttpMethod.Get, okLink) }); mockHttpMessageHandler.Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.Is <HttpRequestMessage>(hrh => hrh.RequestUri.OriginalString == notFoundLink), ItExpr.IsAny <CancellationToken>()) .ReturnsAsync(new HttpResponseMessage { StatusCode = HttpStatusCode.NotFound, RequestMessage = new HttpRequestMessage(HttpMethod.Get, notFoundLink) }); var httpClient = new HttpClient(mockHttpMessageHandler.Object); var linkChecker = new LinkChecker(httpClient, new LinkGetter(httpClient, elementId)); // act Dictionary <string, HttpResponseMessage> results = linkChecker.CheckLinks(mainPageUri); // assert CollectionAssert.IsNotEmpty(results); Assert.That(results.Count, Is.EqualTo(2)); Assert.That(results[okLink].StatusCode, Is.EqualTo(HttpStatusCode.OK)); Assert.That(results[notFoundLink].StatusCode, Is.EqualTo(HttpStatusCode.NotFound)); }