pipe-mock
v2.0.0
Published
PipeMock é um componente de anotação e simulação de funções pipe-line.
Downloads
73
Readme
PipeMock
PipeMock é um componente de anotação e simulação de funções pipe-line.
Separando a palavra Pipe-Mock em duas partes, onde o Pipe (do inglês, cano ou tubo) representa as funções puras muito utilisadas no paradigma da programação funcional, e onde Mock (simulador ou falsificador) em desenvolvimento de software é considerado um objeto que simula o comportamento de outros objetos reais e sendo muito utilizado para testes e observação de comportamento dos mesmos.
Sendo utilizado de forma correta, o mesmo pode testar e simular completamente o fluxo de varias funções em pipeline aninhadas, cujas dependências foram previamente disponibilizadas por parâmetros seguindo o modelo de injeção de dependências.
Instalando
Use the package manager npm to install PipeMock.
npm i pipe-mock
Usabilidade
Podemos utilizar o mock de forma aleatória para vermos o resultado.
import { mock } from "pipe-mock";
// Simulando propriedades injetadas como dependência
const { props, otherProps } = mock();
// Simulando uma função maluca qualquer
const mockResult = props.fakeFuncion(
props.fakeFunc2(
props.foo, // valor fake
props.bar, // valor fake
[123, "abc"], // valor qualquer
otherProps.fakeArray([true, false])
)
);
// Obtendo o controlador do resultado
const $mock = mockResult.$mock;
// Obtendo os dados em JSON
console.log($mock.json());
Que imprimirá:
{
":type": "function",
"path": "props.fakeFuncion",
"props": [
{
":type": "function",
"path": "props.fakeFunc2",
"props": [
{
":type": "prop",
"path": "props.foo"
},
{
":type": "prop",
"path": "props.bar"
},
[123, "abc"],
{
":type": "function",
"path": "otherProps.fakeArray",
"props": [[true, false]]
}
]
}
]
}
Utilizando mock para analisar funções puras:
// utilizando a biblioteca lodash como exemplo
import lodash from "lodash/fp";
// Função comum utilizada para mapear os valores de um array
// e convertê-los para upper-case
function arrayToUpper(props) {
const { pipe, map, toUpper } = props;
return pipe(map(toUpper));
}
const names = ["John Doe", "Mary Jane"];
const result = arrayToUpper(lodash)(names);
console.log(result);
// ["JOHN DOE", "MARY JANE"]
const mockResult = arrayToUpper(mock());
console.log(mockResult.$mock.json());
Que imprimirá:
{
":type": "function",
"path": "pipe",
"props": [
{
":type": "function",
"path": "map",
"props": [
{
":type": "prop",
"path": "toUpper"
}
]
}
]
}
Contribuindo com o projeto
Solicitações pull são bem-vindas. Para mudanças importantes, abra um problema primeiro para discutir o que você gostaria de mudar.