【发布时间】:2019-04-12 16:34:47
【问题描述】:
编写一些单元测试,我想在类中的测试完成之前创建一个对象。于是我设置了setUpBeforeClass()方法:
<?php
namespace Tests\Unit;
use Tests\TestCase;
use App\Location;
class UserTests extends TestCase {
const FAKEID = 9999999;
public static function setUpBeforeClass() : void {
parent::setUpBeforeClass();
factory(Location::class)->make(["id" => self::FAKEID])->save();
}
}
但是当我尝试运行它时,我得到了这个错误:
InvalidArgumentException: Unable to locate factory with name [default] [App\Location].
但是工厂类设置正确。事实上,如果我将同一行向下移动到我的测试函数之一,它就可以完美地工作。
public function testCreateUser() {
factory(Location::class)->make(["id" => self::FAKEID])->save();
// do other stuff...
}
setUpBeforeClass() 的唯一不同之处在于它是一个静态方法,但我不知道为什么这会阻止工厂类工作。
【问题讨论】: