public IEnumerator sendToMultiplayerTest() { UnityLogger logger = new UnityLogger(); HostManager host = new GameObject(nameof(HostManager)).AddComponent <HostManager>(); host.logger = logger; host.start(); ClientManager[] clients = new ClientManager[5]; Dictionary <int, object> receivedDic = new Dictionary <int, object>(); for (int i = 0; i < clients.Length; i++) { clients[i] = new GameObject(nameof(ClientManager)).AddComponent <ClientManager>(); int localI = i; clients[i].onReceive += (id, obj) => { receivedDic.Add(clients[localI].id, obj); return(Task.CompletedTask); }; clients[i].logger = logger; clients[i].start(); Task task = clients[i].join(Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork)?.ToString(), host.port); yield return(new WaitUntil(() => task.IsCompleted)); } Task <int> sendTask = clients[0].send(1); yield return(new WaitUntil(() => sendTask.IsCompleted && clients.All(c => receivedDic.Keys.Contains(c.id)))); Assert.True(sendTask.IsCompleted); Assert.AreEqual(1, sendTask.Result); Assert.True(clients.All(c => receivedDic.ContainsKey(c.id) && receivedDic[c.id] is int i && i == 1)); }