Testes e asserções
fp.test(name, fn) registra um test síncrono. Erros lançados dentro de fn — incluindo falhas de
asserção — são capturados e registrados como um resultado de test com falha. Tests que passam registram
{ name, passed: true }; falhas registram { name, passed: false, error }.
A aba Tests do visualizador de respostas mostra cada resultado de test da requisição. Os resultados podem ser exportados como JSON ou JUnit XML pela UI — o formato JUnit é voltado para ferramentas de CI como Jenkins, GitLab ou Azure DevOps.
Asserções com fp.expect
Section titled “Asserções com fp.expect”fp.expect(value) é um builder fluente no estilo Chai. Os terminais mais úteis:
- Igualdade:
equal/eql(identidade e profunda),closeTo(expected, delta). - Existência:
exist,ok,true,false,null,undefined,empty. - Tipos:
a('string'),instanceOf(Error). - Contenção:
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). - Propriedades:
property('name', value?), com.nestedpara paths com pontos. - Modificadores:
notnega,deeptorna profundo oequalseguinte,nestedhabilita paths com pontos.
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$/);});Segurança do logging
Section titled “Segurança do logging”Tudo que é passado para fp.log/warn/error é clonado em profundidade para uma representação segura
antes de aparecer na UI: funções viram um placeholder mencionando seu nome, referências circulares são
detectadas e rotuladas, e a recursão para na profundidade 3. Um fp.log(someComplexObject) nunca vaza
referências vivas para a UI nem trava o app com um grafo circular.