Escalando a entrega de UI com o Storybook- parte 2 (Injeção de dependências)

Felipe Norato
3 min readJun 21, 2019

--

No artigo passado, eu fiz uma introdução sobre o Storybook, agora vou falar de uns conceitos mais avançados sobre o uso dessa ferramenta. Coisas que você vai ter que usar em projetos reais.

Injeção de dependências

O moduleMetadata é uma grande sacada do Storybook, que nele podemos fazer nossa injeção de dependências de componentes, serviços e módulos auxiliares. Lembrando que a intenção é fazer nossas peças de Lego o mais independente possível da aplicação, não conseguimos fugir de termos serviços e outros componentes utilizados no componente demonstrado, para montar peças maiores e mais reutilizáveis.

Da mesma maneira que fazemos a injeção de dependências no TestBed quando vamos testar o componente podemos fazer praticamente a mesma coisa. É possível injetar os serviços reais ou fake, somente para não termos problemas de excução ou para não precisarmos passar por alguma integração da aplicação (isso é muito util!).

Aqui temos bastante coisa interessante:

  • O componente app-foobar, que é da aplicação;
  • O componente mat-icon, do material;
  • Injetamos o serviço FoobarService, que é bem simples;
  • Injetamos o serviço ComplexService, que o nome ja diz, é complexo e vamos mockar esse cara;

Temos aqui a injeção de dependências necessárias para que nosso componente possa ser apresentado. Como comentei anteriormente é bem parecido com o que fazemos para testar um componente.

Por ordem atribuições:

  • Imports -> do módulo do MatIconModule para satisfazer a dependência do mat-icon;
  • Declarations -> do componente a ser demonstrado, SomeComponent, e o componente FoobarComponent reusado no template do app-some;
  • Provides -> do FoobarService e o mock do ComplexService;

Capturando os eventos de Output do Componente

Agora a única coisa que falta para terminarmos de fazer uma story de um componente real é conseguir capturar os eventos emitidos pelos componentes. Sim, temos como fazer isso.

Da mesma maneira que enviamos os propriedades de Input para o componente, conseguimos capturar os eventos de Output deles. Isso é mais uma sacada sensacional do Storybook.

Quando se pensa em desenvolver um componente temos que validar o comportamento do mesmo. Fazemos isso com teste — nem todos fazem — mas é possivel ter essa verificação no Storybook.

Por default temos instalados alguns addons, como é possível ver nas stories iniciais. Lá temos demostração de Notes, Links, e a super útil Action!

O Addon Action nos permite, justamente, fazer a captura de eventos de um específico Output do componente e printar o resultado na tab Action Logger do Storybook.

Voltando à stories default que ganhamos ao instalar o Storybook. Lá temos uma story demonstrando o uso da action, e do Notes também.

O componente Button possui um Output onClick, que emite um evento, ao clicar. Esse evento será capturado e o valor emitido será logado na tab Action Logger.

Você pode ter achado estranho essa tela do Storybook. É que ela já está turbinada com vários Addons que nos ajudam na produtividade e organização do nosso show room de componentes.

O gif da demonstação do action é de um projeto que eu fiz para demonstrar algumas features do Storybook. Lá você poderá consultar a forma de configuração deles além da demonstração do funcionamento. Você pode ver no meu Github!

Se você não leu o primeiro artigo, é bem importante, pois eu explico alguns conceitos e falo sobre a configuração e instação.

--

--

Felipe Norato
Felipe Norato

Written by Felipe Norato

A person who likes to solve people’s lives using Code and sometimes play Guitar. Lover of TV Shows and Movies, as well as beautiful and performative code.

No responses yet