Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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_Laravel_Unit Testing_Phpunit - Fatal编程技术网

如何在PHPUnit中将整个类封装在事务中?

如何在PHPUnit中将整个类封装在事务中?,php,laravel,unit-testing,phpunit,Php,Laravel,Unit Testing,Phpunit,我的想法是在每个测试类中指定参数,这取决于我们希望如何在事务中包装测试。我使用的是Laravel5.1 use DB; class TestCase { protected static $wrapMethodInTransaction = true; protected static $wrapClassInTransaction = false; /** * @beforeClass */ public static function

我的想法是在每个测试类中指定参数,这取决于我们希望如何在事务中包装测试。我使用的是Laravel5.1

use DB;

class TestCase
{
    protected static $wrapMethodInTransaction = true;
    protected static $wrapClassInTransaction = false;

    /**
     * @beforeClass
     */
    public static function isClassWrappedInTransactionBefore()
    {
        if (!static::$wrapMethodInTransaction && static::$wrapClassInTransaction) {
            DB::beginTransaction();
        }
    }

    /**
     * @afterClass
     */
    public static function isClassWrappedInTransactionAfter()
    {
       if (!static::$wrapMethodInTransaction && static::$wrapClassInTransaction) {
            DB::rollback();
       }
    }
}
这种情况是,当应用程序尚未启动/已经死亡时,
@beforeClass
&
@afterClass
会触发,因此类
DB
不可访问。我只想每个类运行这些方法一次,但当应用程序启动/尚未终止时。有什么解决办法吗


DatabaseTransactions
trait不起作用,因为它在
setUp()
之后启动事务,并在
tearDown()之后回滚它。拉威尔的“魔法”。我希望
setUp()
处于事务中。

您使用的是什么版本的Laravel?我使用的是Laravel 5.1您可能会发现这很有用