public IEnumerator Boss_Defeated_TimeOut_Defeated_Test() { bool isBossFinished = false, isBossEnded = false; int enemyChangeCount = 0; EventHandler <EventArgs> onBossFinished = (o, s) => isBossFinished = true; EventHandler <EventArgs> onEnemyChange = (o, s) => enemyChangeCount++; EventHandler <EventArgs> onEnemyEnded = (o, s) => isBossEnded = true; Boss testBoss = DataInjectorTestHelerMethod.GetTestMockBoss(1).GetComponent <Boss>(); IEnemyComponent testBossComponent = testBoss.IntializeEnemyComponent(); Boss testBossComponentCast = (Boss)testBossComponent; testBossComponentCast.OnEnemyConditionChange += onEnemyChange; testBossComponentCast.OnEnemyFinished += onBossFinished; testBossComponentCast.OnEnemyEnd += onEnemyEnded; testBossComponentCast.ActiveEnemyComponent(); yield return(new WaitForSecondsRealtime(7.05f)); testBossComponentCast.DeactiveEnemyComponent(); Debug.Log($"{enemyChangeCount} {isBossFinished.ToString()}"); Assert.That(enemyChangeCount == 3 && isBossFinished && isBossEnded); }