public void SearchForIssues_WithValidUser_ShouldCallTheDatabaseACorrectAmountOfTimes() { var mock = new Mock<IIssueTrackerDatabase>(); var mockDictionary = new Mock<MultiDictionary<string, Issue>>(true); mock.Setup(d => d.IssuesByTag).Returns(mockDictionary.Object); mockDictionary.Setup(d => d[It.IsAny<string>()]).Returns(new Issue[] { }); mock.SetupProperty(d => d.CurrentUser, new User("Admin", "password")); var tags = new string[] { "tag1", "tag2" }; var database = mock.Object; var trackerTest = new IssueTracker(database); trackerTest.SearchForIssues(tags); mockDictionary.Verify(d => d[It.IsAny<string>()], Times.Exactly(tags.Length)); }