@esydoc/resolver-qa
TypeScript icon, indicating that this package has built-in type declarations

2.1.3 • Public • Published

@esydoc/resolver-qa

一个解析Api源码生成QA代码的解析器

Installation

npm i @esydoc/resolver-qa -D

Usage

esydoc.config.js文件中的resolves字段添加@esydoc/resolver-qa对应的配置就ok拉。

// for example in esydoc.config.js
{
  resolves: {
    '@esydoc/resolver-qa': {
      pathPrefix: 'global.hyExt',
      output: {
        template: "hyext-qa-miniapp",
        dist: path.join(__dirname, "qa-effect-miniapp"),
        hostContext: {
          mocha: { timeout: 8 * 1000 },
          projectName: "qa-effect",
        },
      }
    },
  }
}

Esydoc Extra Config

pathPrefix

调用路径前缀,例如:pathPrefix为'global.hyExt', 原路径为’advance.getTid()‘拼接后'global.hyExt.advance.getTid()'。

{
  resolves: {
    '@esydoc/resolver-qa': {
      pathPrefix: 'global.hyExt',
    },
  }
}

hostContext

hostContext会注入到生成的代码之中,被用于项目运行时。

参数

Name Type Required Default Description
mocha MochaConfig false void mocha 配置对象,点这里
projectName string false 'qa 默认项目' 生成项目的名字
{
  resolves: {
    '@esydoc/resolver-qa': {
      output: {
        hostContext: {
          mocha: { timeout: 8 * 1000 },
          projectName: "qa-effect",
        },
      }
    },
  }
}

API配置文件对应配置

API配置文件对应配置通过源码的注释节点生成,用于配置接口的置顶行为,例如函数调用相关的数据配置。

配置

  • deps: string[],依赖队列,是一个一维数据,某些 api 需依赖其他优先执行,例如:SDK.removeListener 需要 SDK.addListener 先执行后再执行。

  • args: Array, 函数参数队列,是一个二维数据,每个成员代表一个 arguments 或者是一个返回 arguments 的函数,函数的参数从 deps 中获取。

  • onDone?: (e: Error | undefined, next: (e: Error | undefined) => void)=> void, 自定义控制断言结果的 hook, 传入 2 个参数,第一个是接口在测试用例中抛出的错误对象,第二个测试用例消费函数,若在 next 函数中传入错误对象,则代表该测试用例不通过,反之通过。

DEMO

以 advance.sendGift.js 为例子:

module.exports = {
  deps: ['context.getGiftConf'], // getGiftConf优先执行,输出礼物配置数据
  args: [
    // 第一次调用, 默认送一个虎粮
    giftConfQueue => {
      return [
        {
          giftCount: 1,
          giftId: 4
        }
      ]
    },
    // 第二次调用,送一个礼物列表中的一个礼物
    giftConfQueue => {
      const giftConf = giftConfQueue[11]

      return [
        {
          giftCount: 1,
          giftId: giftConf.giftId
        }
      ]
    },
    // 第三次调用,送一个虎粮 - giftId:4
    [
      {
        giftCount: 1,
        giftId: 4
      }
    ]
  ],
  onDone: (e, next) => {
    if (e) {
      // 有些时候,SDK接口抛出的错误
      if (e.message.includes('不能送自己礼物')) {
        next()
      } else {
        next(e)
      }
    } else {
      next()
    }
  }
}

TODO

目前断言的类型只有type equal是远远不够的,之后会将断言部分做成插件的形式,注入到esydoc中, 为定制化的断言做好准

内置模板

  • hyext-qa-miniapp - QA虎牙小程序模板

TODO

目前断言的类型只有 type equal 是远远不够的,之后会将断言部分做成插件的形式,注入到 esydoc 中, 为定制化的断言做好准备

后台

地址 - http://esydoc.huya.info/qa-list

Dependencies (8)

Dev Dependencies (2)

Package Sidebar

Install

npm i @esydoc/resolver-qa

Weekly Downloads

87

Version

2.1.3

License

ISC

Unpacked Size

806 kB

Total Files

43

Last publish

Collaborators

  • limingyi_100
  • hy-ext