用SQLite3进行unit testing

我正在编写unit testing,并用他的inmemory模式使用SQLite3。

我这样做,因为我需要是每个testing新的数据库,所以我可以并行运行testing,而不会相互影响。

但是,这越来越慢,更多的testing,我有。

是否有任何优化,我可以用sqlite3,另一个更好的工作stream程(如一个好的嘲笑库)或另一个解决scheme做这个问题? 我需要运行原始查询。

目前我使用knexjs,但是这与所有的数据访问库有关。

您不需要对数据库运行原始查询。

在unit testing的范围内,你可以假设你的持久层工作,即它能够插入和删除。

在编写unit testing的时候,嘲笑你的数据库连接。 关于unit testing,查询是针对数据库执行并不重要,但是在获取特定input时,您的业务逻辑以特定的方式运行。 (这也可能意味着让你的模拟数据库连接抛出exception,以确保你的应用程序以一种安全的方式运行。)

在集成testing中,无论环境(本地,分段还是生产),实际上都对testing数据库运行查询是有价值的。

然而这些从定义上来说越来越难以build立,只能在一定程度上并行化。 (如果你太依赖它们, 你的testing设置就像一个冰锥而不是一个金字塔 。)

对于关键业务function(例如,购物车点击),它们仍然有意义。 但是,如果你的重点是编写unit testing,确保你unit testing你的应用程序,而不是你的持久层。