Laravel DatabaseTransactions,DatabaseMigrations在测试时没有任何效果

时间:2015-11-07 14:51:28

标签: php unit-testing laravel

我有以下测试类

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.')
        ;
    }
}

运行此代码时,我收到错误,告诉我表格不存在,我能让它工作的唯一方法是在$this->runDatabaseMigrations();方法中调用setUp(),但据我所知我不应该这样做。我对DatabaseTransactions有类似的问题。

Laravel 5.1.23

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

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我最终走了使用shell_exec()的路线,用mysql.dump文件删除,创建和重新设置数据库。这是一个非常草率的选择,但是现在唯一似乎正在发挥作用的是,没有编写一堆SQL脚本来放入所有内容。

Laravel 5 Reseeding the Database for Unit Testing Between Tests

答案 1 :(得分:1)