setUp方法不工作laravel 5.4

时间:2017-10-18 10:59:30

标签: phpunit laravel-5.4 laravel-testing

我的集成测试没有安装方法就可以正常工作。这就是工厂的工作和数据填充到表格中。

<?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:无法找到名称为[factory] ​​[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 方法失败。

谢谢,

1 个答案:

答案 0 :(得分:2)

您忘记将parent::setUp()放入setUp()方法。

用法:

public function setUp()
{
    parent::setUp();
    factory(Channel::class, 3)->create();
    factory(Discussion::class, 10)->create();
}