public async Task FetchDetails_FetchesDetailsFromApiAndReturnsDetailsView() { // Arrange BreadcrumbService breadcrumb = A.Dummy<BreadcrumbService>(); ISearcher<ProducerSearchResult> producerSearcher = A.Dummy<ISearcher<ProducerSearchResult>>(); IWeeeClient weeeClient = A.Fake<IWeeeClient>(); A.CallTo(() => weeeClient.SendAsync(A<string>._, A<GetProducerComplianceYear>._)) .WhenArgumentsMatch(a => ((GetProducerComplianceYear)a[1]).RegistrationNumber == "WEE/AA1111AA") .Returns(new List<int> { 2018, 2017, 2016 }); ProducerDetails producerDetails = A.Dummy<ProducerDetails>(); A.CallTo(() => weeeClient.SendAsync(A<string>._, A<GetProducerDetails>._)) .WhenArgumentsMatch(a => ((GetProducerDetails)a[1]).RegistrationNumber == "WEE/AA1111AA") .Returns(producerDetails); Func<IWeeeClient> weeeClientFunc = A.Fake<Func<IWeeeClient>>(); A.CallTo(() => weeeClientFunc()) .Returns(weeeClient); ProducersController controller = new ProducersController(breadcrumb, producerSearcher, weeeClientFunc, cache); // Act ActionResult result = await controller.FetchDetails("WEE/AA1111AA", 2015); // Assert A.CallTo(() => weeeClient.SendAsync(A<string>._, A<GetProducerDetails>._)) .WhenArgumentsMatch(a => ((GetProducerDetails)a[1]).RegistrationNumber == "WEE/AA1111AA") .MustHaveHappened(); PartialViewResult viewResult = result as PartialViewResult; Assert.NotNull(viewResult); Assert.True(string.IsNullOrEmpty(viewResult.ViewName) || viewResult.ViewName.ToLowerInvariant() == "_detailsresults"); Assert.Equal(producerDetails, viewResult.Model); }