【发布时间】:2021-06-02 18:45:22
【问题描述】:
我正在和我的一个朋友设计一组单元和集成测试,但我们有一个疑问。至少,我们知道答案更有可能是真的。不过,我们想听听您的想法。
我们正在为 MongoDB 设计一个测试,我们希望在请求保存文档后收到一个承诺。到目前为止一切顺利。
如果我们改变数据库呢???我们是否可以确定所有数据库在查询时都会返回一个承诺?
我猜关于 _id,它取决于数据库,我们使用 MongoDB 中的 _id 进行测试。
我们在 Jest 中使用以下测试
create://this method do exist on service, however, at the moment of testing, it is empty, just a placeholder
jest.fn().mockImplementation((cat: CreateCatDto) =>
Promise.resolve({ _id: 'a uuid', ...cat })
)
我们的想法是设计不依赖数据库的后端,但出于测试和开发的原因,我们使用的是 MongoDB 和 PostgreSQL。
【问题讨论】:
-
如果你想避免依赖具体的接口,那么不要直接耦合到那个接口。询问是否“所有数据库都会返回承诺”是没有意义的,数据库不返回承诺。用 JavaScript 编写的数据库可能返回 Promise,但 Promise 只是从函数返回异步结果的众多方法之一。由这些库的作者决定使用哪种方法(如果有的话)。
标签: postgresql mongodb unit-testing javascript