如何在PHPUnit中的事务中包装整个类?

时间:2017-07-27 11:08:23

标签: php laravel unit-testing phpunit

我的想法是在每个测试类参数中指定,取决于我们如何在事务中包装测试。我使用Laravel 5.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特征不起作用,因为它在setUp()之后启动事务并在tearDown()之后回滚它。 Laravel的'魔力'。我希望setUp()处于交易状态。

0 个答案:

没有答案