我在某處讀到,將方法分解成更小的可測試函數是一個好主意,以便可以測試更小的方法。但是我對如何測試調用較小方法的方法感到困惑。這裏有一個例子:PHPUnit - 將代碼分解爲可測試的塊
class MyTestableClass
{
public function myHugeFunction($list, array $list_filter_params)
{
// do a bunch of stuff, then...
foreach($list as $item) {
$this->subFunction($item);
}
}
public function subFunction()
{
// do stuff for each item
}
}
和測試類:
class MyTestableClassTest extends PHPUnit_Framework_TestCase
{
public function testSubFunction
{
// This tests the smaller, bite-size method, which is good.
}
public function testMyHugeFunction
{
// this tests the parent function *and* the subFunction. I'm trying
// to test *just* the parent function.
}
}
我知道如何測試子功能,但因爲我不能存根在同一個類中的方法,我不知道如何測試父方法只有。我想找到一種方式來存儲subFunction,只是返回true。
您是否使用Events和存根事件類?這是我能想到的在同一個類中存儲另一個方法的唯一方法。
MyClass是正在測試的類還是測試本身? – 2013-02-20 15:44:49
@WaleedKhan MyClass是正在測試的類,我將編輯示例進行說明。 – 2013-02-20 16:04:18
我不能肯定地說,因爲你沒有提供*真實的例子*,但它看起來像你誤解了一些東西。 「subFunction」真的是公共接口的一部分嗎?如果不是,你不應該單獨測試它。將軟件分解成可測試的部分也是關於解耦的,但看起來你仍然有一個巨大的緊密耦合的類,而不是多個簡潔的可測試*單元*。 – 2013-02-20 16:30:18