gpt4 book ai didi

unit-testing - Laravel Eloquent 模型在单元测试期间重置引导属性

转载 作者:行者123 更新时间:2023-11-28 20:31:31 24 4
gpt4 key购买 nike

我在从 Eloquent 的基本模型类扩展的类上有一个引导方法。我想运行一些单元测试,我需要它在每次测试时触发。不幸的是,在我扩展的构造函数中设置的 Illuminate\Database\Eloquent\Model::$booted 属性持续存在类 ID 索引 - 因此它仅适用于第一次测试。我试过调整一些 phpunit 的标志 - 我试过进程隔离 - 似乎没有任何效果。

有没有办法重置此属性,以便每个测试都可以触发我的启动方法?

Illuminate\Database\Eloquent\Model.php
public function __construct(array $attributes = array())
{
if ( ! isset(static::$booted[get_class($this)])) <-- Keeps persisting
{
static::$booted[get_class($this)] = true;

static::boot();
}

...
}


app\models\Foo.php
class Foo extends Model {
...

protected static function boot() { <-- first test to execute wins, all other calls get skipped
...
}

...
}

最佳答案

啊——只要多做一点研究,答案就会揭晓!

我的问题基本上是这个问题的重复 Laravel 4 Model Events don't work with PHPUnit ,它引用了这个 thread在github上获取解决方案

关于unit-testing - Laravel Eloquent 模型在单元测试期间重置引导属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com