首先,我们必须了解测试运行程序是如何工作的。
即使每个测试都是以随机顺序运行的,但事实并非如此。而且,你必须明白这一点
setUp
和
tearDown
是
总是
在每次测试之前和之后运行。
设置
方法,如果应用程序未运行,它将刷新应用程序:
if (! $this->app) {
$this->refreshApplication();
}
ModelFactory
再说一遍,对吗?
在
拆卸
方法,它实际上会在方法结束之前销毁应用程序:
if ($this->app) {
foreach ($this->beforeApplicationDestroyedCallbacks as $callback) {
call_user_func($callback);
}
$this->app->flush();
$this->app = null;
}
模型工厂
每次运行测试时都会包含该文件。但这发生在同一个PHP进程中。这就是为什么会出现已定义的函数错误。
为了证明这很简单,只需在你的
文件:
global $a;
if (is_null($a)) {
$a = 0;
}
else {
$a++;
}
var_dump($a);
你会看到的
$a
每次运行测试时递增。
anonymous functions
像这样:
$factory->define(App\Bien::class, function (Faker $faker) {
return [
'id_ubicacion' => 1,
'nombre' => $faker->name,
'clase' => 'CONTROL ADMINISTRATIVO',
'codigo' => $faker->ean13,
];
});