我选择的数据库是 MongoDB。我正在编写一个数据层 API 来从客户端应用程序中抽象实现细节——也就是说,我实际上提供了一个单一的公共接口(一个充当 IDL 的对象)。
我以 TDD 的方式测试我的逻辑。在每个单元测试之前,都会调用一个 @Before
方法来创建一个数据库单例,然后,当测试完成时,会调用一个 @After
方法来删除数据库。这有助于提高单元测试之间的独立性。
几乎所有的单元测试,例如 执行上下文查询,都需要某种插入逻辑来提前完成。我的公共接口提供了一个 insert 方法——然而,将这个方法用作每个单元测试的前导逻辑似乎是不正确的。
实际上,我需要一些模仿机制,但是,我还没有多少模仿框架的经验,而且 Google 似乎没有返回任何可以用于 MongoDB 的模仿框架。
在这种情况下,其他人会做什么? 也就是说,人们如何对与数据库交互的代码进行单元测试?
另外,我的公共接口连接到一个在外部配置文件中定义的数据库——在我的单元测试中使用这种连接似乎是不正确的——同样,这种情况会从某种嘲笑中受益?