Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在phpunit中进行某些测试之前重新加载数据库_Php_Symfony_Phpunit - Fatal编程技术网

在phpunit中进行某些测试之前重新加载数据库

在phpunit中进行某些测试之前重新加载数据库,php,symfony,phpunit,Php,Symfony,Phpunit,我目前正在使用phpunit和symfony5开发单元测试。 在以前使用behat的作业中,我们只能为具有特定标记的测试重新加载数据库。我想做类似的事情。我知道有setUp()方法和@before注释,但它们不允许我为某些测试而不是其他测试做任何事情 理想情况下,我希望有一个@reloadBase注释来放在以此为目标的测试方法上,它将绑定到一个reloadBase()方法或类似的东西;或者至少是类似的,但到目前为止,我还没有找到一个方法来做到这一点 我想有可能把这些测试放在一个单独的文件中,这将

我目前正在使用phpunit和symfony5开发单元测试。 在以前使用behat的作业中,我们只能为具有特定标记的测试重新加载数据库。我想做类似的事情。我知道有setUp()方法和@before注释,但它们不允许我为某些测试而不是其他测试做任何事情

理想情况下,我希望有一个@reloadBase注释来放在以此为目标的测试方法上,它将绑定到一个reloadBase()方法或类似的东西;或者至少是类似的,但到目前为止,我还没有找到一个方法来做到这一点

我想有可能把这些测试放在一个单独的文件中,这将有一个安装方法来完成,但这不是很好,我想保留我当前的文件组织

有什么想法吗?谢谢你这里有两个想法:

特征/基本类
用一个方法创建一个trait或一个公共基类,该方法完成所有的重载工作。使用trait或扩展基类,并仅在需要重新加载的方法中调用它

扩展

实施一项计划。对于每个测试,将使用由类和方法名组成的字符串调用BeforeTestHook。您可以使用批注读取器(例如),也可以自己使用并解析文档块,以检查该方法上是否存在
@reloadBase
批注。

是!扩展的方式是做我想做的!谢谢!可以使用特定数据(使用)隔离每个测试,集成到条令中并易于使用。有趣的捆绑包,但它似乎不允许仅为某些特定测试重新加载夹具,是吗?不幸的是,不是。此捆绑包用于单元测试。因此,单元测试期间的数据库更改不应影响其他单元测试。当然,但单元测试并不总是更改数据库,因此,如果不更改此数据库,则不需要每次DAMA捆绑包不重新加载数据库时都重新加载基库。