首页 > 其他分享 >Storybook version8 智能化构建组件文档与单元测试

Storybook version8 智能化构建组件文档与单元测试

时间:2024-03-29 15:56:38浏览次数:21  
标签:const Storybook default version8 单元测试 storybook export 组件 Card

根据官方文档说法,storybook 是一个独立构建前端UI组件与页面的车间。

Storybook is a frontend workshop for building UI components and pages in isolation. It helps you develop and share hard-to-reach states and edge cases without needing to run your whole app. Thousands of teams use it for UI development, testing, and documentation. It's open source and free.

使用storybook可以很方便的给组件或者页面生成交互效果和用例,它提供了丰富的功能来让我们使用。


快速上手

首先启动一个项目,这里以React为例:npx create-react-app my-app
然后将storybook集成到工程中,参考官方文档,安装有点慢,然后等安装好之后,启动命令:npm run storybook,
就会在浏览器加载出一个页面,类似这种image
会有一些引导步骤教你这个东西怎么用,这里有一些常用的方法,参考如下:


  1. 如何增加新的测试组件
  2. 如何增加不同属性的测试
  3. 如何进行组件的单元测试
  4. 如何加载远程数据

解答:

  1. 首先在stories/下创建一个*.stories.js|ts的文件,
    在文件中需要默认导出 storybook所需的meta data,
    如:
import Card from '@/components/Card';
export default {
	title:'components/Card',
	component:Card
}

这是最基本的配置,title则对应了页面上左侧的菜单,会根据/自动分级,
2. 如果只像第一步那样配置是加载不出来的,因为没有参数配置
增加参数配置其实就是导出一个对象,如:

export const default_config={}

export const useLabel = {
	args:{label:"天下无贼"}
}

上面导出了两个配置对象,第二个配置对象有一个args字段,该字段即为你的组件的props值,useLabel则会作为页面上的菜单名称显示出来,如图:
image
然后右侧的console会出现该参数对应的控制台
image
在上方会渲染出携带该prop的参数,这样一个基本的组件文档就搞好了,

  1. storybook提供了对组件进行单元测试的方法,即:play属性
export const useColor = {
  args: {
    textColor: "red",
  },
  play: async function ({ canvasElement }) {
    const canvas = within(canvasElement);
    const labelDiv = canvas.getByText("default:card", {
      selector: "div",
    });
    await expect(labelDiv).toHaveStyle({ color: "rgb(255, 0, 0)" });
  },
};

上面的函数意思是:选取到textContent为"default:card"的div,这里指的是组件本身,然后用expect断言测试是否有对应的style,如果有则为测试通过,反之则为失败,如图:
image

补充!:在meta data中可以添加decorator来嵌套组件,代码如图:

export default {
  title: "components/Card",
  component: Card,
  args: {
    onClick: fn(),
  },
  argTypes: {
    textColor: { control: "color" },
  },
  decorators: [
    (Story) => (
      <div style={{ border: "1px solid red" }}>
        <Story />
      </div>
    ),
  ],
};

这样在上方渲染组件的时候,组件就会被包裹在一个红色边框的盒子里

  1. 通过storybook提供的loader来加载远程数据,如代码:
import type { Meta, StoryObj } from '@storybook/react';

import fetch from 'node-fetch';

import { TodoItem } from './TodoItem';

/*
 *

标签:const,Storybook,default,version8,单元测试,storybook,export,组件,Card
From: https://www.cnblogs.com/alone4436/p/18104011

相关文章

  • 【项目实战】记一次因单元测试注解@BeforeEach 和@Before错误使用导致的空指针异常
    一、错误说明在项目开发过程中,我们可能会遇到因单元测试注解@BeforeEach和@Before错误使用导致的空指针异常。在使用JUnit5框架时,错误地使用了@Before注解,导致在每个测试方法执行前没有正确初始化对象,从而引发空指针异常。二、报错内容为了解决这个问题,需要了解这两个注......
  • 【异常】IDEA运行单元测试覆盖率统计时,出现运行 整个项目(4)时出错,配置按模块工作目录
    一、报错内容运行整个项目(4)时出错:配置按模块工作目录时将禁用‘覆盖’。只指定一个工作目录,或将测试范围更改为一个模块。二、报错说明这段文字描述了一个在运行整个项目时遇到的错误。错误信息提示说,在配置按模块工作目录时,将禁用’覆盖’。为了解决这个问题,建议......
  • [AIGC] 使用Spring Boot进行单元测试:一份指南
    在现代软件开发过程中,确认你的应用正确运行是至关重要的一步。SpringBoot提供了一组实用工具和注解来辅助你在测试你的应用时,使得这个过程变得简单。下面就来分享一下如何在SpringBoot中进行单元测试。文章目录为什么需要单元测试SpringBoot单元测试的基本步骤示......
  • 转载 单元测试
    注:本文示例环境VS2017XUnit2.2.0单元测试框架xunit.runner.visualstudio2.2.0测试运行工具Moq4.7.10模拟框架什么是单元测试?确保软件应用程序按作者的期望执行操作,其中最好的一种方法是拥有自动化测试套件。可以对软件应用程序进行各种不同的测试,包括集成测试、Web......
  • 开发之单元测试—Test_C++的gtest单元测试
    单元测试测试的本质其实都是一样的,都是通过给定参数来执行函数,然后判断函数的实际输出结果和期望输出结果是否一致测试框架gtest采用的是xUnit架构,JUnitPyUnit:PyUnit主要用于进行白盒测试和回归测试C++测试gtest单元测试是Google的一套用于编写C++测试的框架,可以运......
  • 代码重构与单元测试 ---- 系列文章
    代码重构与单元测试(一)代码重构与单元测试——测试项目(二)代码重构与单元测试——“提取方法”重构(三)代码重构与单元测试——重构1的单元测试(四)代码重构与单元测试——对方法的参数进行重构(五)代码重构与单元测试——将方法移到合适[依赖]的类中(六)代码重构与单元测试——使用“......
  • 4大软件测试策略的特点和区别(单元测试、集成测试、确认测试和系统测试)
    四大软件测试策略分别是单元测试、集成测试、确认测试和系统测试。一、单元测试单元测试也称为模块测试,它针对软件中的最小单元(如函数、方法、类、模块等)进行测试,以验证其是否符合预期的行为和结果。单元测试通常由开发人员编写,目的是在开发过程中尽早发现和修复错误,从而提高软......
  • 精通Spring Boot单元测试:构建健壮的Java应用
    引言:在当今软件开发领域,单元测试已经成为确保应用质量和可维护性的关键步骤。特别是在Java生态系统中,SpringBoot框架作为一种广泛应用的解决方案,其对于单元测试的支持更是让开发者受益匪浅。本博客的目标是为开发者提供一份清晰易懂的指南,帮助他们利用SpringBoot框架构建......
  • 自动生成单元测试、外挂开源代码库等新功能,上线JetBrains IDEs的CodeGeeX插件!
    CodeGeeX第三代模型发布后,多项基于第三代模型能力的新功能今天也同步上线JetBrainsIDEs全家桶。用户可以在IDEA、PyCharm等JetBrains系的IDE中,搜索下载CodeGeeXv2.5.0版本,深度使用最新功能。一、新模型加持的代码补全和智能问答以IDEA为例,在v2.5.0版本的CodeGeeX插件中,用户可......
  • Go语言精进之路读书笔记第44条——正确运用fake、stub和mock等辅助单元测试
    44.1fake:真实组件或服务的简化实现版替身fake测试就是指采用真实组件或服务的简化版实现作为替身,以满足被测代码的外部依赖需求。使用fake替身进行测试的最常见理由是在测试环境无法构造被测代码所依赖的外部组件或服务,或者这些组件/服务有副作用。typefakeOkMailerstruct......