我在集成测试中有一个非常具体的情况。
我正在使用 Spring Boot 开发由几个微服务组成的 Rest API。其中一些服务基本上具有供 UI 应用程序访问或用于内部验证/查询的粗略操作。
所有数据库操作都是通过遗留库(没有 jpa)的过程完成的,我使用的是非标准数据库。我知道良好做法说不要使用真实数据库,但在这种情况下,我无法想象如何在测试时使用虚拟数据库(如 dbunit 或 h2)。这样:
1 - 可以在集成测试中访问真实数据库吗?
如果 1 没问题,我还有一个问题:
通常,我们不会在单元/集成测试中更改数据状态;并且测试应该彼此独立。
但是,就我而言,我只知道 post 方法的响应中的实体 id 是什么,因此难以实现 get/put/delete 方法。当然在 get/put/delete 方法中我可以先插入,然后再进行另一个操作,但是从这个角度来看,最后,我将拥有一个与测试开始时处于不同状态的数据库。这样,我的另一个问题是:
2 - 如何在测试前将数据库恢复到相同的状态?
我知道这可能是一个特定的情况,但我真的很感谢任何帮助找到一种优雅的方式来测试这个场景。
提前致谢。