单元测试Vimscript内置:是否可以重写/模拟或注入替代?

2021-02-25 14:35

I在CoC插件中发现了一个bug,我本打算修复这个bug,但首先我想编写一些文档/学习测试以及回归测试。问题是如何进行的:除了存在维德维姆project.我想测试的代码

解答动态

  • 我也不认为这是可能的。
    我认为您可能会找到一个解决方案,这取决于对has()调用的方式用过。有时您将能够覆盖调用has()的直接结果(如更改/删除函数/命令。。。这取决于has()结果),其他情况下是不可能的。
    在所有情况下,如果要模拟的插件直接使用内置函数,则不可能覆盖此函数。充其量,您可以将整个插件复制到其他地方,用对您的#mock#has()的调用替换对has()的所有调用,并更新运行时路径以使用这个手动模拟的fork.
    PS:Vim的单元测试框架很少。我甚至还保留了一个。

    • 我会说,即使有可能,用这种方式嘲笑has也不是一个好的做法。相反,您应该直接针对您试图支持的vim版本进行测试。许多vim插件都有CI管道,用于测试最新版本的vim、vim8.0、vim7.4、各种neovim版本等。github和gitlab中的自动化测试框架使得这非常容易。类似地,您可以使用不同的vim构建和配置,包括和不包括各种特性。
      我建议这样做的原因是vim经常以微妙的方式进行更改,而不仅仅是“添加特性”。通常,当添加特性、函数、命令等时,其他相邻的事物都会被修复和更改。最好针对实际部署进行测试。
      此外,如果需要测试has(代码)的“异常”分支,最好直接测试需要使用的组件。如果If has(的内容非常长且复杂,那么通常来说,重构代码以允许真正的“单元”测试比开始模拟可能在下一个代码版本中中断的内容要好一些。

      • End

      免责声明:

      本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。