DEV Community

David Goyes
David Goyes

Posted on

Swift Testing #8: Manejo de expectativas (síncronas) en una prueba con #expect y #require

Los macros expect(_:_:sourceLocation:) y require(_:_:sourceLocation:) pueden ser usados para validar los resultados y errores esperados.

Validar un resultado

Las macros expect(_:_:sourceLocation:) y require(_:_:sourceLocation:) capturan una expresión booleana y provocan que la prueba falle si el código no satisface la expectativa.

expect(_:_:sourceLocation:) permite que la prueba continúe aunque falle la expectativa, mientras que require(_:_:sourceLocation:) detiene la prueba si no se satisface el requisito.

En el siguiente ejemplo, a pesar de que la primera expectativa falla, la prueba continúa. La segunda expectativa también falla y aún así la prueba continúa. La tercera expectativa sí se cumple.

@Test
func multipleFailingConditions() {
    #expect(1 + 1 == 3) // ❌ Falla y continúa
    #expect(1 + 1 == 4) // ❌ También falla
    #expect(1 + 1 == 2) // ✅ Pasa
}
Enter fullscreen mode Exit fullscreen mode

En el siguiente ejemplo, el requerimiento de require(_:_:sourceLocation:) no se satisfizo, lo que provoca que arroje un error de tipo ExpectationFailedError y detenga la prueba.

@Test
func breakingTestUponRequireFailed() throws {
    try #require( 1 + 1 == 3) // ❌ Falla y para
    #expect(1 + 1 == 2) // ⚠️ Nunca se ejecuta
}
Enter fullscreen mode Exit fullscreen mode

Bibligrafía

Top comments (0)