gpt4 book ai didi

ruby - 控制硬件的 TDD web api

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:29 24 4
gpt4 key购买 nike

我开发了一个 gem,它包装了一个 C api,用于控制远程电灯开关和调光器。当我开发这个 gem 进行测试时,我在编译时使用一些链接魔术模拟了底层 C api,并且工作正常我可以在没有正确硬件的情况下在我的桌面上开发等等。

现在我想在另一个项目中使用这个 gem 来围绕它包装一个更高级别的 REST API,但我正在努力进行测试。

我应该如何在不需要硬件的情况下测试我的 REST API。我是否应该在项目中将我的低级 api 作为 git 子模块包括在内并处理加载路径以便我可以重用低级模拟?

或者我应该再次模拟新项目的整个 API 吗?我在这里完全不知所措。

欢迎就此提出任何建议或讨论

最佳答案

如果我没理解错的话,您想要用另一个暴露 REST API 的层来包装 C Api 的相同“gem”。我对吗?如果是这样,您应该模拟 gem 或 C API,就像您对 gem 所做的那样。

“纯”TDD 从业者通常建议隔离最小的部分(即模拟 gem)以插入 SRP(单一责任原则)。

另一方面,当我添加的层(在本例中为 REST API)主要是一个包装器并且没有很多自己的“业务逻辑”时,我个人更喜欢编写我的测试更像是集成测试而不是纯单元测试,这样我就可以在正确的上下文中测试新层。 (即一起测试 Rest API + gem,并模拟唯一的 C API)

如果此 REST API 纯粹是一个包装器,那么您可以通过将它们推送到基类并派生 2 个子类来重用您的测试:一个用于测试 gem 本身,一个用于通过 REST API 对其进行测试。无论如何,我总是一起重构我的测试和代码以消除重复。有时,这会导致我更改模拟的内容和不模拟的内容,并改进整体设计,包括 CUT 和测试本身。

HTH...

关于ruby - 控制硬件的 TDD web api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30422856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com