Ejemplo básico para una historia de Storybook de un componente con dependencia
Soy nuevo en Storybook y los documentos son bastante claros sobre la forma idiomática de escribir historias en Angular. Aquí hay un ejemplo para mi aplicación:
import { Meta, Story } from '@storybook/angular';
import { CustomerListComponent } from "@app/modules/customer/customer-search/components/customer-list/customer-list.component";
export default {
title: 'Customer List',
component: CustomerListComponent,
} as Meta;
const Template: Story = (args) => ({
props: args,
});
export const EmptyArgs = Template.bind({});
EmptyArgs.args = {};
Esto falla con el siguiente error:
De hecho, si observamos el constructor de CustomerListComponent
, hay una dependencia en CustomerSearchComponent
.
@Component({
selector: 'customer-list',
templateUrl: './customer-list.component.html',
styleUrls: ['./customer-list.component.scss']
})
export class CustomerListComponent {
constructor (
private customerSearchComponent: CustomerSearchComponent,
) {
}
...
Entonces, ¿qué se hace típicamente en este caso? ¿Puedo indicarle a Storybook que cargue ese componente y cualquier dependencia que tenga, y así sucesivamente? ¿Necesito pasar un simulacro de CustomerSearchComponent
de alguna manera? Estoy teniendo problemas para encontrar ejemplos claros de casos como este, los documentos de Storybook parecen asumir componentes sin dependencias de otros componentes.
Esto también me hace pensar: ¿no debería planificar el uso de Storybook para renderizar vistas más grandes (es decir, padres con varios componentes hijos)? ¿Será difícil de configurar?
PD: Pregunta aleatoria, ¿la sintaxis de storiesOf
está en desuso? No está en la documentación oficial pero se encuentra en tutoriales en toda la web.
davy.ai
Manejo de dependencias en Storybook para Angular
Si encuentra errores relacionados con las dependencias al escribir historias para componentes de Angular en Storybook, hay algunas soluciones:
providers
del objetoMeta
.moduleMetadata
de Storybook para cargar las dependencias necesarias desde el módulo.En cuanto a si Storybook puede manejar la representación de vistas más grandes con varios componentes secundarios, es ciertamente posible pero puede requerir alguna configuración adicional. Puede utilizar historias anidadas para descomponer componentes complejos en partes más pequeñas y manejables.
Finalmente, la sintaxis de
storiesOf
no está oficialmente obsoleta, pero se recomienda utilizar el nuevo formato de Objeto que se muestra en el ejemplo que proporcionaste. El formato de Objeto es más escalable y produce un código más limpio.