我正在编写单元测试,并使用sqlite3与他的内存模式。
我之所以这样做,是因为我需要每个测试的新数据库,因此我可以并行运行测试而不会相互影响。
,但我的测试越多。
我可以对SQLite3,另一个更好的工作流(例如,一个好的模拟库)或其他解决方案进行此问题吗?我需要运行原始查询。
目前我使用knexjs,但这与每个数据访问库有关。
您不需要针对数据库运行原始查询。
在单元测试的范围中,您可以假设您的持久性层有效,即能够上升和删除。
编写单元测试时,请模拟数据库连接。关于单位测试,对数据库进行查询并不重要,但是您的业务逻辑在获得某些输入时以特定的方式行为。(这也可能意味着要使模拟的数据库连接进行投掷异常以确保您的应用程序以故障安全的方式行事。)
无论环境如何(本地,分期甚至生产),进行集成测试实际上确实对测试数据库进行查询。
然而,根据定义,这些设置越来越慢,很难设置,只能在一定程度上平行。(如果您过多地依靠它们,您的测试设置类似于冰锥,而不是金字塔。)
它们对于关键业务功能仍然有意义(例如,购物车单击)。然而