Introscope:好,非常懒惰的单元测试

在工作中,我们在JS(启动)中编写了许多经常更改的业务逻辑。 甚至太多。 我想按照旧习惯测试所有这些,但是要以某种方式更快地进行测试,以便在需要时测试不会干扰govnokod,并且模块的结构不是专门为测试定制的。 在某个时候,人们想到了它也可以通过简单的babel插件以某种方式实现自动化,因此一开始它会在测试环境中显示所有私有变量和方法,但在生产中不会碰到它。 事实证明这非常简单有趣。 这就是Introscope产生的方式,我们现在正以此来测试或多或少复杂的所有事物。


交完项目后,Habr尊敬我几个月来改善部署和监视,休息了,当我需要再次测试某些东西时,我立即对自己的工具感到高兴! 这对我来说并不常见。 更确切地说,它从未如此。 所以,我认为这是可行的。 希望您也能派上用场。


简而言之,它能做什么?


  1. 将整个模块包装为工厂功能,以便您可以在测试期间根据需要创建任意数量的新模块。 这消除了进行模拟的需要。
  2. 由于模块是包装的,因此tulza可以准确知道模块导入了哪些变量,并可以根据其类型生成moki。 对于或多或少的功能样式,这非常有用。
  3. 它能够记录来自外部模块的对函数的调用和参数,并将其全部记录到日志中,然后将其漂亮地序列化为快照(如果使用Jest,一切将立即开始)。
  4. 杀手级功能:可以保存调用外部函数的结果,并将其用于进一步的测试。 在测试对我们过去经常开车进入moki的外部服务的请求时,这非常方便。
  5. 与Jest结合使用时,通过按一个(我不是在开玩笑)U按钮来更新测试,该按钮会更新快照。 黄金测试方法的所有荣耀。
  6. 在生产中工作将近一年。

结果


测试开始是由以前甚至不想听测试的人编写的,因为您只需要使用必要的参数调用该函数,然后使用一个按钮保存该函数发生的情况的日志即可。 我只是想测试别的东西...


链接: Introscope (也有gif截屏视频!)。 对于建设性的批评和与之的联系,我将感到非常高兴,但做得更好:D


图片

Source: https://habr.com/ru/post/zh-CN437104/


All Articles