问题 如何在JavaScript中运行(类似Python)doctests?


任何JavaScript测试框架都提供了与Python的doctest大致相当的东西吗?

function add(a, b) {
  /**
  Returns the sum of `a` and `b`:

    > add(1, 3)
    4

  Add coerces types to numeric values where possible:

    > add('51' + 3)
    54
  */
  return (a - 0) + (b - 0);
}

2522
2017-11-14 23:09


起源

你能添加更多细节吗?乍一看,这看起来很相似 stackoverflow.com/questions/4180224/...。 - John Kugelman
这个问题指的是doctests,这个问题指的是docstrings。它们根本不同,尽管它们都出现在评论中。 - Tim McNamara
“如何在JavaScript中运行(Python)doctests?”让我觉得你想用JavaScript运行Python代码。我想你可以从你的问题标题中删除“(Python)”。 - Denilson Sá Maia
@DenilsonSá感谢您的评论。我更改了标题以回应@John Kugelman的回应。我想澄清这个问题的独特性。 - Tim McNamara
怎么样:如何在JavaScript中运行“类似Python”的doctests? - Denilson Sá Maia


答案:


我昨天不知道自己在吸烟。 Soory。

doctestjs (github上的doctestjs)是正确的链接,似乎也在积极发展。

虽然它与python doctest的工作方式略有不同,但是使用doctestjs可以在HTML文件中声明测试,以便可以运行它们。

但我想应该可以在代码中声明内联测试。然后在构建过程中执行预处理步骤以提取测试并从中自动创建test-html

例如当使用ant我想象一个应用副本文件,replaceregexp,concat。 例如复制js文件,替换所有不是注释的内容和所有看起来不像doctestjs测试的注释。然后concat htmlhead + tests + headfooter完成。


2
2017-11-14 23:26



真? JDocTest 是为了Java, jsdoc-toolkit 似乎没有任何综合测试设施 code.google.com/p/jsdoc-toolkit/w/list?can=2&q=test。 - Tim McNamara
更新了我的帖子 - jitter
谢谢你调查一下 - Tim McNamara
它似乎现在被抛弃了,你知道有什么替代品吗? - Janus Troelsen


我无法理解Ian Bicking的软件包,doctestjs。他只是为我们提供了一种不同的方式来编写正常的外部测试,而不是真正的doctests。

我使用了很多python doctests,它们对我来说非常重要,我不知道doctestjs有什么用处,但我发现这个项目实现了一些真正的doctests: https://github.com/davidchambers/doctest 。

即使这不是javascript最新潮的doctest项目,我也非常喜欢它。


更新: 经过这一回答后的一年多,我有机会为David Chambers的项目做出贡献,这篇文章写得非常好。我也在使用它的复杂应用程序中使用它 require.js为此我们增加了对AMD模块的支持。我认为他也增加了对Common JS模块的支持。因此,我只能证实我的意见。


12
2017-11-24 21:23



谢谢。我对“doctestjs”的印象也是如此。 - Ben