public void FindByCategories_Find() { var mockContext = new Mock <NexusContext>(); mockContext.Setup(nex => nex.Set <Category>()).Returns(TestHelpers.MockDbSet(new List <Category>() { new Category() { Id = 1, Title = "Cat 1" }, new Category() { Id = 2, Title = "Cat 1.1", ParentId = 1 }, new Category() { Id = 3, Title = "Cat 2" }, new Category() { Id = 4, Title = "Cat 2.1", ParentId = 3 } })); mockContext.Setup(nex => nex.Set <Note>()).Returns(TestHelpers.MockDbSet(new List <Note>() { new Note() { Id = 1, Title = "Note 1" }, new Note() { Id = 2, Title = "Note 2" }, new Note() { Id = 3, Title = "Note 3" }, new Note() { Id = 4, Title = "Note 4" }, })); mockContext.Setup(nex => nex.Set <NoteCategory>()).Returns(TestHelpers.MockDbSet(new List <NoteCategory> { new NoteCategory { NoteId = 1, CategoryId = 1 }, new NoteCategory { NoteId = 2, CategoryId = 2 }, new NoteCategory { NoteId = 3, CategoryId = 3 }, new NoteCategory { NoteId = 4, CategoryId = 4 } })); var repo = new NoteRepository(mockContext.Object); var notes = repo.FindNotesByCategories(new[] { 1, 3, 2 }).ToList(); Assert.Equal(3, notes.Count()); Assert.Contains(notes, note => note.Id == 1); Assert.Contains(notes, note => note.Id == 2); Assert.Contains(notes, note => note.Id == 3); Assert.DoesNotContain(notes, note => note.Id == 4); }