setUp 方法无效 laravel 5.4
setUp method not working laravel 5.4
我的集成测试在没有设置方法的情况下工作正常。那就是工厂工作,数据被填充到 table.
<?php
namespace tests\Integration\Model;
use App\Channel;
use App\Discussion;
use Tests\TestCase;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class ChannelModelTest extends TestCase
{
/** @test
*/
function it_returns_discussion_count()
{
// GIVEN
factory(Channel::class, 3)->create();
factory(Discussion::class,10)->create();
// WHEN
$discussion_count = Channel::find(1)->discussions->toArray();
//THEN
$this->assertCount(2, $discussion_count);
}
}
但是如果我在 setUp 方法中移动两个工厂,我会收到错误消息:
InvalidArgumentException:无法找到名称为 [default] 的工厂 [App\Channel]:
namespace tests\Integration\Model;
use App\Channel;
use App\Discussion;
use Tests\TestCase;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class ChannelModelTest extends TestCase
{
public function setUp()
{
factory(Channel::class,3)->create();
factory(Discussion::class,10)->create();
}
/** @test
*/
function it_returns_discussion_count()
{
// GIVEN
// WHEN
$discussion_count = Channel::find(1)->discussions->toArray();
//THEN
$this->assertCount(2, $discussion_count);
}
}
我不明白为什么将工厂移动到 setUp 方法会失败。
谢谢,
您忘记将 parent::setUp()
放入您的 setUp()
方法中。
用法:
public function setUp()
{
parent::setUp();
factory(Channel::class, 3)->create();
factory(Discussion::class, 10)->create();
}
我的集成测试在没有设置方法的情况下工作正常。那就是工厂工作,数据被填充到 table.
<?php
namespace tests\Integration\Model;
use App\Channel;
use App\Discussion;
use Tests\TestCase;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class ChannelModelTest extends TestCase
{
/** @test
*/
function it_returns_discussion_count()
{
// GIVEN
factory(Channel::class, 3)->create();
factory(Discussion::class,10)->create();
// WHEN
$discussion_count = Channel::find(1)->discussions->toArray();
//THEN
$this->assertCount(2, $discussion_count);
}
}
但是如果我在 setUp 方法中移动两个工厂,我会收到错误消息:
InvalidArgumentException:无法找到名称为 [default] 的工厂 [App\Channel]:
namespace tests\Integration\Model;
use App\Channel;
use App\Discussion;
use Tests\TestCase;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class ChannelModelTest extends TestCase
{
public function setUp()
{
factory(Channel::class,3)->create();
factory(Discussion::class,10)->create();
}
/** @test
*/
function it_returns_discussion_count()
{
// GIVEN
// WHEN
$discussion_count = Channel::find(1)->discussions->toArray();
//THEN
$this->assertCount(2, $discussion_count);
}
}
我不明白为什么将工厂移动到 setUp 方法会失败。
谢谢,
您忘记将 parent::setUp()
放入您的 setUp()
方法中。
用法:
public function setUp()
{
parent::setUp();
factory(Channel::class, 3)->create();
factory(Discussion::class, 10)->create();
}