2016-09-13 25 views
0

所以,在Laravel 5.3我有以下測試:數據庫事務並不妨礙ID增量在Laravel測試時

class ArticleTest extends TestCase 
{ 
    use DatabaseTransactions; 

    /** @test */ 
    public function it_fetches_trending_articles() 
    { 
     factory(Article::class, 3)->create(); 
     factory(Article::class)->create(['reads' => 10]); 
     $mostPopular = factory(Article::class)->create(['reads' => 20]); 

     $articles = Article::trending(); 

     $this->assertEquals($mostPopular->id, $articles->first()->id); 
    } 
} 

這是怎麼回事上創建3篇文章沒有「讀」信息,一個文章有10個閱讀和一個有20個閱讀。我得到的文章,按'讀'命令,並採取第一個,並聲稱它的ID是相等的,我敢肯定是最趨勢。測試通過,一切正常。

但問題在於DatabaseTransactions特徵不能按預期工作。是的,它不會將文章保存到數據庫,但它會不斷增加每次測試運行時的id數。

如果你給我一些關於如何防止這種行爲的建議,那將是非常好的。

在此先感謝。 :)

+0

「問題雖然,」---爲什麼它是一個問題? – zerkms

+1

對我來說這似乎是錯誤的,但現在,當我想起它時,這不是一個問題,但是事情是如何工作的...... – brslv

回答

2

你必須使用DatabaseMigrations。即使事務反轉,數據庫也會增加主鍵。它必須,否則您可能會在您的應用程序重複主鍵有其他問題。

+0

是的,傑夫,謝謝。 DatabaseMigrations的特質就像一個魅力。 – brslv

相關問題