npm 包 schema-mock 使用教程

阅读时长 9 分钟读完

什么是 schema-mock

schema-mock 是一个能够生成随机数据的 npm 包,它可以根据定义的数据结构,生成符合 JSON Schema 的随机数据。这个工具可以帮助前端开发者快速地测试接口,减少手写测试数据的时间。

安装

通过 npm 安装 schema-mock

使用

我们先根据一个数据结构生成随机数据,来看一下 schema-mock 的主要用法。

-- -------------------- ---- -------
-- ---
----- ---------- - -----------------------

-- ------
----- ------ - -
  ------- ---------
  ------------- -
    ----- - ------- -------- --
    ------- - ------- --------- -------- --------------- --
    -------- - ------- --------- --------- ------- --
    ----------- - ------- -------------------- --
    --------- - ------- --------- --
    -------- - ------- ---------- ---------- -- ---------- --- --
    -------- - ------- --------- ---------- ------------------ -
  --
  ----------- ------ ------- --------
--

-- ------
----- -------- - -------------------

----------------------

通过以上代码,我们可以发现随机数据如下:

-- -------------------- ---- -------
- 
  --- -----------------
  ----- ------ --------
  ------ -------------------
  --------- ---------------------------
  ------- -----
  ------ ---
  ------ --------------
 -

可以看到,schema-mock 会根据我们定义的数据结构,生成符合 JSON Schema 规范的随机数据。

接下来,我们会对 schema-mock 的详细使用进行介绍。

定义数据结构

在使用 schema-mock 之前,我们需要先定义数据结构,数据结构使用 JSON Schema 进行定义,下面是一个示例数据结构:

-- -------------------- ---- -------
----- ------ - -
  ------- ---------
  ------------- -
    ----- - ------- -------- --
    ------- - ------- --------- -------- --------------- --
    -------- - ------- --------- --------- ------- --
    ----------- - ------- -------------------- --
    --------- - ------- --------- --
    -------- - ------- ---------- ---------- -- ---------- --- --
    -------- - ------- --------- ---------- ------------------ -
  --
  ----------- ------ ------- ---------
  -------------- -
    ------- - ------- --------- --------- ----------- -
  -
--

我们定义了一个类型为 object 的数据结构,包含了七个属性,其中:

  • id 为 number 类型;
  • name 为 string 类型,使用了 faker 库中的 findName 方法生成;
  • email 为 string 类型,格式为 email;
  • birthday 基础类型为 string 类型,引入了一个 $ref,引用了另外一个数据结构 date;
  • isMale 为 boolean 类型;
  • score 为 integer 类型,数值在 1-100 之间;
  • phone 为 string 类型,符合指定的正则表达式。

以上数据结构我们可以通过 JSON Schema 规范中定义的所有技术进行定义,这里就不再详细介绍,如果你对 JSON Schema 规范不太熟悉,可以先到 JSON Schema 官方文档 学习一下。

生成随机数据

有了数据结构之后,我们就可以通过 schema-mock 生成符合该结构的随机数据。下面是一个简单的示例:

此时,我们可以在控制台中看到生成的随机数据,如:

-- -------------------- ---- -------
- 
  --- -----------------
  ----- ------- ------
  ------ -----------------------------
  --------- ---------------------------
  ------- ------
  ------ ---
  ------ --------------
-

从随机数据可以看到,数据结构中定义的类型及其他设置被完全正确地反映在随机数据中。

指定随机数据范围

我们可以通过在数据结构中定义范围限制,来指定随机数据生成的范围。比如我们可以通过设置 maximum 和 minimum 来指定 score 属性的范围。

-- -------------------- ---- -------
----- ------ - -
  ------- ---------
  ------------- -
    ----- - ------- -------- --
    -------- - ------- ---------- ---------- -- ---------- --- -
  --
  ----------- ------
--

----- -------- - -------------------

----------------------

以上代码可以生成的随机数据范围在 1-100 之间。

生成多条数据

如果我们需要生成多条随机数据,可以调用 SchemaMock 的第二个参数来指定数据个数,如:

以上代码可以生成三条随机数据。

常用属性

除了上面的语法,schema-mock 还提供了大量的属性设置,这些属性都符合 JSON Schema 规范,我们可以在我们的数据结构中使用。下面是一些常用的属性:

type

该属性用于定义数据类型,schema-mock 支持的数据类型包括:number、integer、string、boolean、null、array 和 object。

faker

该属性用于指定数据类型为 string 的随机数据,使用 Faker.js 库 中的方法生成。举个例子:

以上代码中,name 属性为 string 类型,调用 Faker.js 库的 firstName 方法生成随机名字。

format

该属性用于指定数据类型为 string 的随机数据,格式为指定的值。格式支持的值可以在 JSON Schema 规范中 查看。

minimum 和 maximum

该属性用于指定数据类型为 number 或 integer 的随机数据的范围。如:

pattern

该属性用于指定数据类型为 string 的随机数据的格式,是一个正则表达式。如:

以上代码定义了一个 phone 属性,其格式必须符合指定的正则表达式。

enum

该属性用于指定数据类型为 string、integer 或 boolean 的随机数据,必须是指定值中的一个。如:

以上代码定义了一个 isMale 属性,其值必须是 true 或 false 中的一个。

items

该属性用于指定数据类型为 array 的随机数据,定义数组元素的数据结构。如:

以上代码定义了一个 tags 属性,其值为一个数组,其中每个元素必须为 ["javascript", "html", "css", "node.js", "vue.js"] 中的一项。

$ref

该属性用于引用其他数据结构,如:

以上代码定义了一个 birthday 属性,其基础类型为 string,然后引用了其他数据结构中定义的 date 基础类型。

这些属性只是 schema-mock 数据结构定义中的一小部分,如果需要了解更多属性及其用法,可以到 官方文档 中查看。

总结

schema-mock 是一个非常实用的 npm 包,可以帮助前端开发者在测试接口时生成随机数据,避免时间和精力的浪费。在使用的过程中我们需要先定义数据结构,然后可以通过定义属性来指定各种生成随机数据的选项。通过这篇文章,相信大家对 schema-mock 的使用已经有了一个初步的认识。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055fea81e8991b448dd98c

纠错
反馈