2. 2
●Daniel Mirilli
○ + 20 anos de desenvolvimento de software
○ Desenvolve projetos de integração desde 2005
○ Desde 2013 profissionalmente utilizando a plataforma MuleSoft
Sobre o apresentador
3. 3
● Conceitos de Unit Testing
● Submódulos do MUnit
● Como criar um MUnit
● Outros tópicos sobre MUnit
Agenda
4. E porque você deveria se importar?
O que é Unit Testing?
5. 5
● Definição
○ Testes automatizados, geralmente compatível com CI/CD
○ Garantem a execução de um "contrato"
○ Usam method stubs, mock objects, fakes e test harnesses
● Vantagens
○ Identificar erros antecipadamente
○ Possibilitar o TDD
○ Facilitar a refatoração
● Limitações e Desvantagens
O que é Unit Testing?
6. 6
Para mim, código legado é simplesmente
código sem testes.
Working Effectively With Legacy Code, Michael Feathers
9. 9
Servidor MUnit Database e FTP
●Testar funcionalidades que dependam de
um servidor de banco de dados ou FTP.
●Implementa servidores in-memory /
embarcados na sua máquina local ou
durante o CI/CD
●Permite a execução rápida de testes
10. 10
Servidor MUnit Database
●Permite a definição de uma estrutura de
tabelas
○ CSV
○ SQL (CREATE TABLE)
■ Suporta PK, FK, CONSTRAINTS…
●Componentes:
○ Execute: executa uma instrução SQL
○ Execute query: executa uma query SQL
que retorna dados
○ Validate that: valida o resultado de uma
query SQL
11. 11
Servidor MUnit FTP
●Componentes:
○ Contains file: verifica a existência de um
arquivo no servidor
○ Remove: remove um arquivo no servidor
● Configuração:
15. Componentes do MUnit
●Declara um Evento Mule (entrada de dados)
●Pode criar:
○ Payload
○ Atributos
○ Erros
○ Variáveis
●Atua como mock de um componente de
evento
●Dica: criar usando referência para doc:id
● Pode retornar:
○ Payload
○ Atributos
○ Erros
○ Variáveis
16. Componentes do MUnit
●Assert equals: valores estáticos (ex: #[20], "Hello World!")
●Assert that: usa Matchers (ex: #[MunitTools::nullValue()],
#[MunitTools::containsString('example')], #[MunitTools::greaterThan(20)])
●Assert Expression: usa dw::test::Asserts (ex: vars.attributes must [beObject(), $.statusCode
must equalTo(200), $.method must equalTo('GET')]
●Run custom: assertiva que usa classe Java que implementa MunitAssertion
17. Componentes do MUnit
●Spy: verifica o que acontece antes e depois do componente (before call e after call)
●Verify call: verifica se um componente foi chamado. Permite as configurações times,
atLeast e atMost
●Fail: força a falha de um teste com uma mensagem de erro
19. Outros tópicos sobre MUnit
●Parameterized
○ Mesma test suite com valores diferentes
●Test Recorder
○ Grava o fluxo processado e permite a configuração de testes unitários