public void GetAccounts_ShouldReturn_ListOfAccounts() { // Arrange // Read in response data from file var dataPath = Path.Combine(_executingLocation, "..", "..", "..", "..", "..", "data", "mock-accounts-response.json"); var responseJson = File.ReadAllText(dataPath); // Setup mocks var mockHttpClient = SetupMockHttpClient($"accounts", responseJson); var mockCache = SetupNullMockCache(); // Instansiate TrueLayer DataApiClient var dataApiClient = new DataApiClient(mockHttpClient.Object, mockCache.Object); // Act var accounts = dataApiClient.GetAccounts("token").GetAwaiter().GetResult(); // Assert // HttpClient should be called mockHttpClient.Verify(m => m.GetData(It.IsAny <Uri>(), It.IsAny <string>()), Times.AtLeastOnce); // Cache get should be called mockCache.Verify(m => m.GetAsync(It.IsAny <string>(), It.IsAny <CancellationToken>()), Times.AtLeastOnce); // Cache set should be called mockCache.Verify( m => m.SetAsync(It.IsAny <string>(), It.IsAny <byte[]>(), It.IsAny <DistributedCacheEntryOptions>(), It.IsAny <CancellationToken>()), Times.AtLeastOnce); Assert.AreEqual(2, accounts.Count); }