【问题标题】:Laravel DatabaseTransactions, DatabaseMigrations have no effect when testingLaravel DatabaseTransactions、DatabaseMigrations 测试时没有效果
【发布时间】:2016-02-08 14:52:50
【问题描述】:

我有以下测试类

use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class ProvidersTest extends TestCase
{
    use DatabaseMigrations;

    /**
     * @var \Orka\Entities\User
     */
    protected $user;

    public function setUp()
    {
        parent::setUp();
        $user = factory(\Orka\Entities\User::class)->create();
        $this->user = $user;
    }

    /**
     * @test
     */
    public function it_shows_no_connected_providers()
    {
        $this
            ->actingAs($this->user)
            ->visit('/teams/1/providers')
            ->see('You have not connected a provider yet.')
        ;
    }
}

运行此代码时,我收到一条错误消息,告诉我表不存在,我可以让它工作的唯一方法是在 setUp() 方法中调用 $this->runDatabaseMigrations();,但据我所知,我不需要要做到这一点。我对 DatabaseTransactions 也有类似的问题。

Laravel 5.1.23

关于为什么会发生这种情况的任何想法,因为文档说它应该自动触发。

【问题讨论】:

  • 问题解决了吗?

标签: php unit-testing laravel


【解决方案1】:

我也有同样的问题。我最终选择了使用 shell_exec() 来删除、创建和使用 mysql.dump 文件重新植入数据库的路线。这是一个相当草率的替代方案,但目前唯一可行的方法是编写一堆 SQL 脚本来放入所有内容。

Laravel 5 Reseeding the Database for Unit Testing Between Tests

【讨论】:

    【解决方案2】:

    【讨论】:

    • 它在 Laravel 5.2 中已修复,但在 5.1 中尚未修复。
    猜你喜欢
    • 1970-01-01
    • 2018-03-23
    • 2017-09-18
    • 2018-07-08
    • 2017-06-05
    • 2015-09-07
    • 2019-11-20
    • 2018-11-25
    • 2017-05-14
    相关资源
    最近更新 更多