在Node.js单元测试中将MySQL自动增量重置为拆除步骤

在Node.js单元测试中将MySQL自动增量重置为拆除步骤,mysql,unit-testing,node.js,express,Mysql,Unit Testing,Node.js,Express,我目前正在Node.js应用程序中对我的DAL运行单元测试。我希望能够使用一个虚拟数据库,通过在整个测试过程中发生的非正式设置/拆卸来测试我的CRUD操作。例如,通过执行插入操作进行安装,通过执行删除操作进行拆卸 我正在测试数据库,而不是模拟/伪造,因为我更喜欢针对数据库的半工作副本测试复杂的SQL 我遇到的问题是,在具有AUTO_INCREMENT-ing的列上,我不能期望ID有任何一致性。通过重置AUTO_INCREMENT我可以避免这种情况,但是我会做大量的复制粘贴编码,在我所有的模型中插

我目前正在Node.js应用程序中对我的DAL运行单元测试。我希望能够使用一个虚拟数据库,通过在整个测试过程中发生的非正式设置/拆卸来测试我的CRUD操作。例如,通过执行插入操作进行安装,通过执行删除操作进行拆卸

我正在测试数据库,而不是模拟/伪造,因为我更喜欢针对数据库的半工作副本测试复杂的SQL

我遇到的问题是,在具有
AUTO_INCREMENT
-ing的列上,我不能期望ID有任何一致性。通过重置
AUTO_INCREMENT
我可以避免这种情况,但是我会做大量的复制粘贴编码,在我所有的模型中插入一种方法


有没有什么办法让我只做一次就忘了它?或者我完全缺少更好的实践吗?

您可以使用MySQL的命令,该命令清空表并重置自动增量列。实际上,它会删除表并重新创建它,这比删除所有行要快。

我认为问题都源于您的陈述“我正在测试数据库,而不是模拟/伪造”——这到底意味着什么?为什么不从头开始重新创建表作为测试设置的一部分?@OliCharlesworth这意味着我实际上是连接到MySQL的本地版本,而不是模拟它。也许我应该两者都做?模拟DAL测试控制器,然后单独测试DAL作为一种集成测试。@OliCharlesworth我当然可以这样做。然后只需将表格放入
拆卸
。但是,当我可以使用测试本身进行设置/拆卸时,这似乎是一项非常艰巨的工作。仔细想想,使用测试进行设置/拆卸似乎是一种非常糟糕的做法,因为期望在以后的测试中发生拆卸会假定其他测试通过。如果他们不这样做,那么拆卸步骤可能永远不会正确发生。那么我想你真的应该从头开始重新创建整个数据库,作为设置的一部分。那样的话,你就不可能依赖政府了。