BDu*_*elz 6 tdd phpunit unit-testing
我正试图进入TDD领域,而且我很难对我拥有的一些用户模型进行单元测试.我正在尝试测试我的模型的验证,业务要求如下:
所有要求都很容易测试,除了5,这要求数据库处于已知状态.我知道使用PHPUnit我可以使用XML文件将我的数据库设置为已知状态,但是有更好的方法吗?
我想要的是让我的数据库恢复到运行测试之前的状态(即在开发期间).我想我可以使用MySQL事务来回滚更改,或者我想我也可以使用两个独立的数据库,一个用于开发,一个用于测试.
我还读到了在单元测试中不使用实际DB连接的地方,而是使用模拟数据.不太确定它是如何工作的.
有人可以向我解释我有不同的选择,哪些是最好的路线?
谢谢
编辑:
我想我将采用Ruby on Rails方法,只需设置3个独立的数据库,即生产,开发和测试.除非有人强烈反对.
有些人说不要在数据库上进行测试,而像我这样的其他人则说这是你知道 DAO 代码是否良好的唯一方法。
你需要的是两个数据库。一份用于测试,一份用于开发。最佳实践是为您的单元测试提供一个公共超类,用于设置数据库(可能初始化一个新模式),然后所有数据库单元测试都在该数据库中运行。之后就可以清理掉了。
对于您提到的测试(用户名和电子邮件不能已存在于数据库中),然后执行类似的操作(伪代码)。
Create user with username that you know doesn't exist (say username-largerandomuuid)
Insert user.
Assert user was created
Insert same user(name)
Assert error is thrown.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
123 次 |
最近记录: |