使用注释对代码进行单元测试。

在Supabase,我们喜欢编写尽可能少的代码,因此我们决定将单元测试与支持VSCode的IntelliSense的相同JSDoc注释结合在一起。

JSDoc简介

如果您以前从未听说过JSDoc,则可能已经看过。这些注释位于像这样的Javascript方法或类之上:

/**
 * Returns the sum of 2 numbers
 * @param {number} a The first number
 * @param {number} b The second number
 */
export const sum = (a, b) => {
  return a + b
}

@example标记

JSDoc有一个标签, @example,向开发人员展示如何使用已记录的项目。

/**
 * Returns the sum of 2 numbers
 * @param {number} a The first number
 * @param {number} b The second number
 * @example
 * // returns 3
 * sum(1, 2)
 */
export const sum = (a, b) => {
  return a + b
}

尽管结构有些不同,但这与Elixir的doctest非常相似。 Elixir具有其他好处,您可以使用以下注释来运行测试:

Elixir doc测试
“ 4 doctests”

因此,我们认为使用Javascript实现相同的功能非常酷:@ supabase / doctest-js。

Doctest-JS使用与Elixir的Doctests非常相似的格式, //=> 指定返回值。

/**
 * @example sum(1, 2)
 * //=> 3
 */

文档测试

如果您想在自己的代码上尝试一下,这很简单:

1.安装

npm install @supabase/doctest-js

2.写@example评测

在要测试的任何函数上创建JSDoc样式@example。

例如,创建一个名为 sum.js 并添加以下代码:

/**
 * Returns the sum of 2 numbers
 *
 * @example sum(1, 2)
 * //=> 3
 */
export const sum = (a, b) => {
  return a + b
}

3.运行测试

在您的测试套件中导入doctest函数,并将其指向该文件。

例如,创建一个名为 test.js 并添加以下代码:

import doctests from '@supabase/doctest-js';

describe('Doctests', () => {
  // file paths are relative to root of directory
  doctest('sum.js')
})

然后简单地运行 node test 这样您就可以得到记录完整,经过测试的代码,而无需维护任何其他代码。

观看并加注星标doctest-js以保持有关新版本的更新。

您可以在我们的postgrest-js库中看到它的运行情况:

资讯来源:由0x资讯编译自DEV,原文:https://dev.to/supabase/use-comments-to-unit-test-your-code-4igk ,版权归作者所有,未经许可,不得转载
你可能还喜欢