Dar*_*yle 6 php codeception laravel-5
我正在使用Codeception验收测试来测试用L5编写的CRUD应用程序.我想知道你们是怎么做到的.
我原本以为我能够使用CEST并使用该@depends属性来指定顺序,但似乎每次测试后都会运行自动数据库清理,所以在插入后,下一个测试无法在数据库中找到该记录.
有没有一种方法可以做到这一点,而无需专门为测试而专门编写数据库转储?
我希望能够按此顺序进行以下测试:
并检查每个阶段的数据库,以确保它成功.
任何帮助将不胜感激.
干杯,达里尔
此处指定的默认行为绝对是您想要的.您希望测试能够单独执行.如果您想再次重新测试某个区域,因为它已损坏,您不必再返回并再次运行先前的测试以使其处于正确状态以再次运行测试.
单个损坏的测试可以让您更好地了解破损的位置,而不是多次破坏测试,因为您所有其他测试所依赖的测试都被破坏了,这就是您所描述的方法所适用的.
如果您考虑一下,请说您正在进行测试驱动开发.您使用创建记录的正确数据编写破解测试.其他测试是读取,更新,再次读取,删除记录,更新不同的记录,创建另一个新记录,然后再次阅读.删除失败,创建和读取测试失败,因为您重新插入相同的索引.测试不会告诉你,然而,你只需要进行4次破坏测试,你必须检查所有被破坏的测试,以及哪一次导致其他测试中断,如果确实如此.你不会知道.
如果您执行默认行为告诉您的操作,您将只有一个损坏的测试,并解决了问题.容易死.您只需添加到数据库,因为测试用例可以适应它们.
如果要检查数据库中的内容,可以通过在同一测试中查询两次来完成.执行更新查询,然后对刚刚完成的操作运行选择查询,并执行和等于另一个断言.如果您正确设置并且没有错误,您可以相信数据库已经运行了您的查询,但您更了解您的应用程序.例如,也许你有触发器运行.
我相信你可以在配置中用这种东西来阻止这种行为,但它不是你想要的!:
class_name: FunctionalTester
modules:
enabled: [Filesystem, FunctionalHelper, Laravel4, Asserts]
config:
Laravel4:
environment: 'testing'
cleanup: false
Run Code Online (Sandbox Code Playgroud)