我正在尝试进入TDD领域,并且我正在测试一些用户模型的困难时间单元。我想测试我的模型的验证和业务要求如下:单元测试Dababase应用程序
- > = 6个字符的用户名需要
- > = 5个字符的密码,至少有1字母和数字
- 有效的电子邮件格式要求
- ...等等等等等等
- 用户名和电子邮件不能在DB
所有要求是已经存在易于测试,除5之外,这要求数据库处于已知状态。我知道使用PHPUnit,我可以将我的数据库设置为使用XML文件的已知状态,但有没有更好的方法?
我想让我的数据库恢复到运行测试之前的状态(即在开发过程中)。我想我可以使用MySQL事务来回滚这些更改,或者我想我也可以使用两个单独的数据库,一个用于开发,一个用于测试。
我也读过某处不使用单元测试中的实际数据库连接,而是使用模拟数据。不太确定这是如何工作的。
有人可以向我解释我拥有的不同选择,哪些是最佳路线?
感谢
编辑:
我想我会去与Ruby on Rails的做法和刚刚成立3个独立的数据库,生产,开发和测试。除非有人强烈反对。
也许有点关系:http://stackoverflow.com/questions/5281418/using-mock-objects-in-php-inside-functions-that-instantiate-their-own-objects – edorian 2011-05-25 16:56:54