2015-12-02 36 views
0

我在PHPUnit測試中有點不習慣,我需要涵蓋一個方法的多個場景。該方法獲取表的行並根據它進行決策,因此如果我有0行匹配我的查詢,它將執行一些操作,否則它將執行另一個操作。更改每個PHPUnit測試的數據集

我做了DBUnit的設置,一切正在運行,但整個類運行相同的getDataSet方法,因此它運行相同的MySQLXMLDump。

例如:

testScenarioA - >空表。

testScenarioB - >表中有數據。

我需要上我的課每測試功能加載 XML。我怎麼能做到這一點?

+0

這是什麼課程?它有什麼方法?你使用什麼數據集? –

+0

不管它是什麼類,也不管它有什麼方法。問題是:我如何動態加載基於測試功能的數據集,而不是類? – gfviegas

+0

沒有**任何**信息,我們無法幫助您。請添加一些,否則您將無法獲得答案。 –

回答

0

所以,如果你在你的單元測試類的數據集,你可以有數據集返回空的結果和一些數據

public static function dataForTest() { 

    return [ 
     'empty' => [getEmptyDataset()] 
     'results' => [getResults()] 
    ]; 
} 
在用於測試的功能

然後使用與您的數據集

/** 
* @dataProvider dataForTest 
*/ 
public function testSyncUser($dataTypes) { 
    foreach ($dataTypes as $dataType) { 
     // Run tests 
    } 
} 

或者,您可以創建一個輔助類,與您的單元測試一起使用,以便即時獲取測試數據。 PHPUnit在實例化測試單元類之前生成所有數據集,所以有時這可能是一種有用的方法。

+0

主要問題是用數據轉儲我的MySQL數據庫。我在這裏使用這個人:https://phpunit.de/manual/current/en/database.html#database.implementing-getdataset – gfviegas