我在一个从Eloquent的基础模型类扩展的类上有一个boot方法。我想运行一些单元测试,我需要在每次测试时触发它。不幸的是,类ID索引持久存在于我扩展的构造函数中设置的Illuminate\Database\Eloquent\Model::$booted
属性 - 因此它仅适用于第一个测试。我已经尝试调整一些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
...
}
...
}
答案 0 :(得分:2)
我的问题基本上是这个问题的重复Laravel 4 Model Events don't work with PHPUnit,它在github上引用了这个thread的解决方案