2016-11-18 71 views
1

有沒有辦法讓一個setUp()和tearDown()方法告訴laravel「在數據庫中創建所有這些插入內容,但是當您完成所有測試時,刪除不重置數據庫」Laravel 5使用phpUnit進行測試而不重置我的數據庫

所有插入我需要做的測試是這樣的:

/** @test */ 
public function testRegistration(){ 

    $account = [ 
    'name'  => 'test', 
    'email' => '[email protected]', 
    'password' => '123451234' 
    ]; 

    $this->visit('/register') 
     ->type($account['name'],'name') 
     ->type($account['email'],'email') 
     ->type($account['password'],'password') 
     ->type($account['password'],'password_confirmation') 
     ->press('Register') 
     ->seePageIs('/home'); 
} 

起初,我可以運行phpunit,它會工作,如果我再次運行,當然它返回一個錯誤說服力我不能使用此電子郵件,因爲已經在數據庫中。

的問題是,我不能簡單的復位我的數據庫,我有插在我的數據庫中已有12.000行,我,因爲我需要插入到我的應用程序是有意義的這些12.000行不能創建test_database

我還沒有找到任何可以使用的信息,我可以找到的所有信息都是「讓您的測試調用遷移::刷新併發送4分鐘來再次填充您的表」,但我確信這是可能的找到更好的解決方案!

另外,我在哪裏把我的setUp()方法,我在哪裏調用它?

謝謝。

回答

1

請參閱this和此documentation(使用交易)。

此特徵將僅包含事務中的默認數據庫連接。

換句話說,插入將被「僞造」,因此您無需每次都將其刪除。

另一種選擇是添加另一個測試,在該測試中刪除所做的每個插入。

User::where('name', 'test')->where('email','[email protected]')->delete(); 
+0

謝謝,正是我需要的! –

相關問題