我試圖圍繞測試進行測試,並且我知道它比我想象的要容易。我的猜測是,我會不可避免地遇到麻煩,因爲我先寫代碼,現在只是做測試,而不是有測試驅動的開發過程。不返回任何東西的測試方法
我的問題是關於包含文件的功能。他們不回報任何東西,但他們爲整個劇本做了些什麼。
比方說,我有一個類,包括文件:
<?php
class Includer {
public function __construct() {
$this->include_file("/var/www/index.html");
}
public function check_file_validity($file = "") {
// Check to see if the file exists
return true; // if exists
}
public function include_file($file = "") {
if ($this->check_file_validity($file)) {
include $file;
}
}
}
我可以寫一個測試,以斷定該文件存在(check_file_validity
),這將是直線前進。
但是,根據是否包含文件,返回include_file
函數的布爾值是否可以接受?這不是一個多餘的測試,因爲運行check_file_validity
函數時基本上會發生同樣的情況?
我應該注意,包含該文件的信息來自URL,因此這裏沒有文件將被硬編碼在測試之外(除非我嘲笑$_GET
參數)。
您是否會說會膨脹代碼,從而導致長期追蹤問題變得更加困難,因爲增加了功能?你的回答確實有助於我理解該怎麼做,所以非常感謝你。 – helllomatt
這取決於。通常你想把這些類型的功能組合在一起,所以不用添加'include'方法,你可能想要考慮一個可重用的加載器對象。或者如果你想解析文本文件,你可以創建一個'Reader'類並使用它來代替原始的PHP函數。但是你不必測試一切。在你的情況下,只需測試'check_file_validity'就可以了。但是我想告訴你,如果邏輯變得更加複雜,如何仍然能夠使用這些函數來測試方法。 –