public void GetSpellsByLevel() { // Arrange var spellbook = new Spellbook(); var mockLevel0 = new Mock <ISpell>(); mockLevel0.Setup(s => s.Level) .Returns(0); var level0 = mockLevel0.Object; spellbook.Add(level0); var mockLevel1 = new Mock <ISpell>(); mockLevel1.Setup(s => s.Level) .Returns(1); var level1 = mockLevel1.Object; spellbook.Add(level1); var mockLevel2 = new Mock <ISpell>(); mockLevel2.Setup(s => s.Level) .Returns(2); var level2 = mockLevel2.Object; spellbook.Add(level2); // Act var result = spellbook.GetAllSpells(); // Assert Assert.AreEqual(3, result.Length); Assert.Contains(level0, result); Assert.Contains(level1, result); Assert.Contains(level2, result); }