Imagínese, tenemos un sut como editor que publica valores continuamente y nunca termina. Al cambiar alguna entrada (por ejemplo, cambiamos alguna propiedad @Published simulada de la que depende nuestro sut ), emite un evento.
Recopilamos estos eventos en la matriz de results y luego verificamos si hay una cantidad exacta esperada de eventos, ni menos ni más.
El problema es: ¿cómo verificar que no haya más eventos después de lo que esperamos que se emita? Sin el método de wait , no sabemos cuándo es el momento de verificar la matriz de results .
wait funcionará, pero me parece una muleta para Combine. Porque las buenas pruebas unitarias deben ser rápidas (ver PRIMEROS principios de las pruebas unitarias). Y estas wait se parecen más a un antipatrón.
Tampoco pude encontrar una recomendación de Apple sobre esto.
Necesita un programador de pruebas, que es básicamente un programador de tiempo virtual que le permitirá controlar cuándo se publicarán los eventos basados en el tiempo. Entonces, por ejemplo, puede disparar todos los eventos a la vez. Combine no tiene un programador de pruebas incorporado, pero puede usar un programador de pruebas de código abierto llamado Entwine