Tests y aserciones
fp.test(name, fn) registra un test síncrono. Los errores lanzados dentro de fn — incluidas las
fallas de aserción — se capturan y se registran como un resultado de test fallido. Los tests que pasan
registran { name, passed: true }; las fallas registran { name, passed: false, error }.
La pestaña Tests del visor de respuestas muestra cada resultado de test de la solicitud. Los resultados se pueden exportar como JSON o JUnit XML desde la UI — el formato JUnit está pensado para herramientas de CI como Jenkins, GitLab o Azure DevOps.
Aserciones con fp.expect
Section titled “Aserciones con fp.expect”fp.expect(value) es un builder fluido estilo Chai. Los terminales más útiles:
- Igualdad:
equal/eql(identidad y profunda),closeTo(expected, delta). - Existencia:
exist,ok,true,false,null,undefined,empty. - Tipos:
a('string'),instanceOf(Error). - Contención:
include(value),include.keys('a', 'b'),keys('a', 'b'). - Numéricos:
above(n),below(n),least(n),most(n),lengthOf(n). - Predicados:
match(regex),satisfy(fn),oneOf([...]),throw(matcher?). - Strings:
startWith(prefix),endWith(suffix). - Propiedades:
property('name', value?), con.nestedpara paths con puntos. - Modificadores:
notniega,deephace profundo el siguienteequal,nestedhabilita paths con puntos.
fp.test('user has expected fields', () => { const body = fp.response.json(); fp.expect(body).to.have.keys('id', 'email'); fp.expect(body.email).to.match(/@example\.com$/);});Seguridad del logging
Section titled “Seguridad del logging”Todo lo que se pasa a fp.log/warn/error se clona en profundidad a una representación segura antes de
mostrarse en la UI: las funciones se vuelven un placeholder que menciona su nombre, las referencias
circulares se detectan y etiquetan, y la recursión se detiene en profundidad 3. Un
fp.log(someComplexObject) nunca filtra referencias vivas a la UI ni congela la app con un grafo
circular.