Unit testing 单元测试DABASE应用程序
我正试图进入TDD领域,我很难对我拥有的几个用户模型进行单元测试。我正在尝试测试模型的验证,业务需求如下:Unit testing 单元测试DABASE应用程序,unit-testing,tdd,phpunit,Unit Testing,Tdd,Phpunit,我正试图进入TDD领域,我很难对我拥有的几个用户模型进行单元测试。我正在尝试测试模型的验证,业务需求如下: >=需要6个字符的用户名 >=5个字符的密码,至少包含1个字母和数字 需要有效的电子邮件格式 。。。废话废话 数据库中不能已经存在用户名和电子邮件 所有需求都很容易测试,除了5,它要求数据库处于已知状态。我知道使用PHPUnit可以使用XML文件将数据库设置为已知状态,但是有更好的方法吗 我希望数据库恢复到运行测试之前的状态(即,在开发期间)。我想我可以使用MySQL事务回滚更改,或者我也
我想我将采用RubyonRails方法,只需设置3个独立的数据库,即生产、开发和测试。除非有人强烈反对。有些人说不要在数据库上测试,像我这样的人说这是唯一能让你知道你的DAO代码是否好的方法 您需要的是两个数据库。一个用于测试,一个用于开发。最佳实践是为您的单元测试设置一个公共超类来设置数据库(可能初始化一个新的模式),然后所有的DB单元测试都在该数据库中运行。之后你可以把它清理干净 对于您提到的测试(数据库中不能已经存在用户名和电子邮件),然后执行类似的操作(psuedocode)
也许有点相关:所以你是说要有单独的数据库,一个用于测试,一个用于开发。或者你是说两者使用相同的数据库?因为您提到有一个单独的用于测试和一个用于部署,但没有提到一个用于主动开发。谢谢。通常你会在本地有两个数据库——一个用于私人开发,一个用于私人测试。在每次测试运行时,将拆除并重建测试组件。开发版本是一个从活动版本的克隆版本,可能每隔几天或几周刷新一次。或者在测试设置中临时添加一个重复的行。测试完成后删除该行。
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.