public void GetAllMembersAsynchronouslyFromDbResultsMatchWithTestData() { // Arrange DataLayer dataLayer = new DataLayer(); // Act // Create task that goes and does the I/O for us. Task<List<GangMember>> actualMembersTask = dataLayer.GetAllGangMembersAsync(); // Arrange - This is arranging but in order to show the asyc behaviour, it has been implemented after the ACT // In the mean time we can instantiate our test data. List<GangMember> expectedMembers = new List<GangMember>(); expectedMembers.Add(new GangMember { MemberID = 1, MemberName = "Gentleman Jack", MemberRank = "Bootlegger" }); expectedMembers.Add(new GangMember { MemberID = 2, MemberName = "Brainy Somerville", MemberRank = "Head Honcho" }); expectedMembers.Add(new GangMember { MemberID = 3, MemberName = "Bobby Tweaks", MemberRank = "Pickpocket" }); expectedMembers.Add(new GangMember { MemberID = 4, MemberName = "Toothless Jim", MemberRank = "Brawler" }); expectedMembers.Add(new GangMember { MemberID = 5, MemberName = "Whispering Sam", MemberRank = "Hitman" }); // Act // With that instantiated we can wait for our results List<GangMember> actualMembers = actualMembersTask.Result; // Assert int incrementMember = 0; // Now we loop through the test data and check it against our results foreach (var gangMember in expectedMembers) { Assert.AreEqual(gangMember.MemberID, actualMembers[incrementMember].MemberID); Assert.AreEqual(gangMember.MemberName, actualMembers[incrementMember].MemberName); Assert.AreEqual(gangMember.MemberRank, actualMembers[incrementMember].MemberRank); incrementMember++; } }