使用注释对代码进行单元测试。
在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具有其他好处,您可以使用以下注释来运行测试:
“ 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库中看到它的运行情况: