typestar

Probar errores y panics en Rust

Las pruebas pueden devolver Result, y should_panic afirma la falla que esperas.

fn stars(value: i32) -> Result<u8, String> {
    if (0..=3).contains(&value) {
        Ok(value as u8)
    } else {
        panic!("stars out of range: {value}");
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn parses_a_number() -> Result<(), std::num::ParseIntError> {
        let n: i32 = "3".parse()?;
        assert_eq!(stars(n).unwrap(), 3);
        Ok(())
    }

    #[test]
    #[should_panic(expected = "out of range")]
    fn rejects_too_many_stars() {
        stars(9).unwrap();
    }
}

fn main() {
    println!("{:?}", stars(2));
}

Cómo funciona

  1. Una prueba que devuelve Result te deja usar ? adentro.
  2. #[should_panic(expected = ...)] coincide con el mensaje.
  3. #[ignore] estaciona una prueba lenta hasta que la pidas.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
29
Caracteres a escribir
471
Tokens
156
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 89 segundos.

Escribe este fragmento

Paso 2 de 3 en Pruebas y documentación; paso 5 de 12 en Módulos, pruebas y macros.

← Anterior Siguiente →