【问题标题】:setUp method not working laravel 5.4设置方法不起作用 laravel 5.4
【发布时间】:2018-03-30 05:39:40
【问题描述】:

我的集成测试在没有设置方法的情况下可以正常工作。那就是工厂工作并将数据填充到表中。

<?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: Unable to locate factory with name [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 方法会失败。

谢谢,

【问题讨论】:

    标签: phpunit laravel-5.4 laravel-testing


    【解决方案1】:

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

    用法:

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

    【讨论】:

    • 我后来想通了。但无论如何感谢您的回复。干杯:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 2017-12-04
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 2017-10-17
    相关资源
    最近更新 更多