我对单元测试很新,但我已经阅读了很多关于phpunit.de的文档(直到第10章).
它指出使用数据库进行测试可能很慢,但如果设置正确,它可以与非数据库测试一样快.
因此,我想在Laravel中测试一个模型.我已经创建了一个模型工厂来将数据植入数据库.
我也创建了一个基本测试.
在PHPUnits文档中,它声明在每次测试之前,setUp()调用该方法来设置测试.还有另一种静态方法setUpBeforeClass().
我想只为我的数据库表播种一次,并使用我的测试中的记录.所以我使用Laravels factory()函数从setUpBeforeClass()方法中为数据库设定种子.
这是我的代码:
class CommentTest extends TestCase
{
protected static $blog;
protected static $comments;
public static function setUpBeforeClass()
{
parent::setUpBeforeClass();
self::$blog = factory(App\Models\Content\Blog::class)->create();
self::$comments = factory(App\Models\Content\Comment::class, 6)->create();
}
public function testSomething()
{
$this->assertTrue(true);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时phpunit,我收到以下错误:
Fatal error: Call to a member function make() on a non-object in \vendor\laravel\framework\src\Illuminate\Foundation\helpers.php on line 54
Call Stack:
0.0002 240752 1. {main}() \vendor\phpunit\phpunit\phpunit:0
0.0173 1168632 2. PHPUnit_TextUI_Command::main() \vendor\phpunit\phpunit\phpunit:47 …Run Code Online (Sandbox Code Playgroud)