45人参与 • 2025-03-30 • Ruby
本周我们应该向我们的 cli 工具添加测试。迄今为止最令人沮丧的事情。
我是 tdd(测试驱动开发)的坚定支持者。几乎每一段代码都应该被测试。在我的合作期间,我一半以上的时间都花在为我的 pr 编写测试上。我相信这段经历确实帮助我理解了测试的必要性。我很惊讶地发现 js 和 ruby 中的测试框架是如此相似。我使用的 jest 与我在合作期间使用的 rspec 非常相似。为了模拟 http 请求,我使用了类似于 vcr 的 nock。
我面临的主要问题是我使用了 esm 而不是 commonjs。这让我的生活变得更加困难。第一个问题是 jest.mock 不起作用。经过一些研究,我意识到 esm 中的模拟方式是不同的。不幸的是,即使遵循文档后我也无法让它工作。所以,我不得不做 jest.spyon。我面临的第二个问题是,由于 execa 在 child_process 中运行 index.test.js,尽管运行它不会影响覆盖率报告。所以我不得不使用 jest.spyon 来重写测试。我还必须重构index.js,以便它不会采用我传递给笑话的标志。我遇到的其他较小问题是,使用 node --experimental-vm-modules --no-warnings node_modules/jest/bin/jest.js -c jest.config.mjs 而不是 jest -c jest.config.mjs 因为我是使用 esm。我还必须使用mock-fs来复制文件系统来测试filepathresolver.test.js,因为简单的jest.spyon没有对其进行足够彻底的测试。我很惊讶仅仅使用 esm 就造成了如此多的障碍,这恰恰反映出 js 是多么混乱。
经过多次尝试错误,我得到了相当好的覆盖范围。
以上就是将 jest 添加到explainerjs的详细内容,更多请关注代码网其它相关文章!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论