使用数据库为功能创建单元测试的标准/最佳实践是什么?
2022-08-31 01:08:01
我理解了单元测试背后的想法,但是当它需要数据库功能时,我试图想出一种干净简单的方法。例如,我有一个函数,它基于数据库选择查询返回结果。数据库是否必须始终保持不变,以便我正确看到只返回了正确的结果。当单元测试需要数据库不活动(无论是读取、写入、更新还是删除)时,执行单元测试(在 PHP 中)的最佳方法是什么?
我理解了单元测试背后的想法,但是当它需要数据库功能时,我试图想出一种干净简单的方法。例如,我有一个函数,它基于数据库选择查询返回结果。数据库是否必须始终保持不变,以便我正确看到只返回了正确的结果。当单元测试需要数据库不活动(无论是读取、写入、更新还是删除)时,执行单元测试(在 PHP 中)的最佳方法是什么?
PHPUnit手册中有一整章是关于这一点的:
这就像单元测试时的其他所有内容一样。创建一个已知状态并针对它测试代码,以查看它是否返回预期的结果。
就个人而言,我创建了一个虚拟测试数据库,并在每次测试运行中用已知数据集填充它(我在函数中直接执行此操作)。然后针对该数据集运行测试,然后在...setUp
tearDown
现在,这更像是一个集成测试,而不是一个单元测试(我个人认为它与单元测试不同,与其他集成测试一起按照自己的时间表运行),但它仍然非常有用。