我开发了一个包含C api的宝石,用于控制远程灯开关和调光器。当我开发这个gem进行测试时,我在编译时用一些链接魔法嘲笑了底层的C api,并且工作正常,我可以在没有正确硬件的情况下在我的桌面上开发等等。
现在我想在另一个项目中使用这个gem来包装更高级别的REST API,但我正在努力进行测试。
如何在不需要硬件的情况下测试我的REST API。我是否应该在项目中将我的低级api作为git子模块包含在负载路径中,以便我可以重用低级模拟?
或者我应该再次模拟新项目的整个API?我在这里完全失败了。
欢迎任何关于此的提示或讨论
答案 0 :(得分:0)
如果我理解正确,你想要包装相同的" gem"用另一个暴露REST API的层包装C Api。我对吗? 如果是这样,你应该模仿gem或C API,就像你使用gem一样。
"纯" TDD从业者通常建议隔离最小的部分(即模仿宝石)以推动SRP(单一责任原则)。
另一方面,当添加的层I(在这种情况下为REST API)主要是一个包装器并且没有很多"业务逻辑"然而,就我自己而言,我更喜欢将测试编写为更像集成测试而不是纯单元测试,以便我在正确的上下文中测试新层。 (即,一起测试Rest API + gem,并模拟唯一的C API)
如果这个REST API纯粹是一个包装器,那么你可以重用你的测试,将它们推送到一个基类并派生出两个子节点:一个用于测试gem本身,另一个用于通过REST API测试它。 无论如何,我总是将我的测试和代码重构在一起以消除重复。有时这会让我改变我嘲笑的东西,改变我不会做的事情,并改善整体设计,包括CUT和测试本身。
... HTH