2011-04-18 305 views
3

所以這是我想測試的類。具體而言,我只是選擇了一個我想測試的功能。而var是從classB中做一些函數返回的值bar是classC中的實例,然後執行一些傳遞一些變量的函數。對於大多數提示/示例,要測試的函數返回一個值。所以我的問題是,如何測試這個特定的功能工作?如何在phpunit中不返回值的單元測試函數?

謝謝。

class mA extends A { 
    ... 
    function doSomething($foo) { 
     $var = doStuffFromClassB("hallo"); 
     $bar = ClassC::instance(); 
     $bar->doStuffFromClassC($var, $foo, "world"); 
    } 
} 

回答

6

如果這就是所謂的doSomething,它並不表示它做什麼返回一個值,那麼你可以使用mock objects跟蹤與其他物體的相互作用。

請參閱PhpUnit的documentation on mock objects。我想在這種情況下,你想驗證doStuffFromClassC方法與doStuffFromClassB的var有關。

+0

謝謝4的建議。但我有以下問題要問: [1]所以要測試這些方法(doStuffFromClassB&C),我應該在一個測試中寫入它還是爲每個doStuffFromClass *寫入單獨的測試? [2]或者我應該只需要測試類B和C的TestCase中的那些方法,而不是測試mA類中的void函數? – 2011-04-21 10:30:35

+1

對於單元測試,您希望將正在測試的類從其他類的所有實現中分離出來。如果mA的代碼只是調用B和C上的方法,然後驗證。 B和C可以單獨進行單元測試。 – 2011-04-21 10:33:33

相關問題