[TestCase(3)] //3 tracks = 3 checks public void TestUpdateEvents_EventDetectionWithXTracks_ChecksCorrectAmountOfTimes(int trackCount) { var checkCnt = 0; for (int i = 0; i < trackCount - 1; i++) { var track = Substitute.For <ITrack>(); _tracks.Add(track); //keeps same values to ensure that even occurs } //sets up fake to count up variable, thus eliminating dependency _el.When(x => x.UpdateCurrEvent(Arg.Any <IEvent>())) .Do(x => checkCnt++); _uut.UpdateEvents(_tracks[0], _tracks); Assert.AreEqual(trackCount - 1, checkCnt); //Assert that eList was called correct amount of times }