Php 运行数据库TDD测试

Php 运行数据库TDD测试,php,database,tdd,Php,Database,Tdd,我在我的PHP项目中使用TDD(测试驱动开发),我还有一个数据库,可以存储用户之类的东西。 我有一个创建用户的类,所以它类似于: $user = new User(); $user->create('username', 'password', 'mail'); 因此,我还有一个测试,测试该方法(创建用户)是否有效。因此,我的问题是,每次运行测试时,都会创建一个用户,因此它可以正常工作。 但我想知道是否有一种方法可以进行测试,而不是在数据库中创建信息,因为每次我运行所有测试时,它都会创建

我在我的PHP项目中使用TDD(测试驱动开发),我还有一个数据库,可以存储用户之类的东西。
我有一个创建用户的类,所以它类似于:

$user = new User();
$user->create('username', 'password', 'mail');
因此,我还有一个测试,测试该方法(创建用户)是否有效。因此,我的问题是,每次运行测试时,都会创建一个用户,因此它可以正常工作。
但我想知道是否有一种方法可以进行测试,而不是在数据库中创建信息,因为每次我运行所有测试时,它都会创建新用户,所以我的数据库中都有使用测试创建的用户

希望你能理解我

谢谢

一种方法是在Create测试中添加Delete测试。在您的测试创建了新用户之后,您将返回并将其从数据库中删除。这样你就可以同时测试两件事情,而不会污染你的数据库,如果其中一件失败,你就会知道


另一种方法是将DB调用抽象出来,这样在创建新用户时,内存中就可以有一些东西假装是DB,或者进行任何其他DB调用。

是的,我考虑过按照你在第一段中所说的做!但是我没有真正理解你在第二段说的话。。。您是否建议为测试创建另一个db?谢谢不,它不会创建另一个数据库。我猜第二种方法实际上不会告诉你用户是否被保存。我认为在创建用户之后删除它可能是最好的开始方式。另一种想法。您是否可以在创建用户之前设置数据库事务,然后将用户保存在该事务中,如果插入在该事务中工作,则可以回滚该事务。这样你就知道插入成功了,也不会把记录传给数据库。好吧,我想我明白你的意思了。。。你的意思是像正常一样处理事务,然后执行回滚吗?我找到了这个,我想这就是你告诉我的,不是吗?