讓我解釋一下自己。如何對單元測試循環對象的函數?
function insertObjects($objs) {
foreach ($objs as $obj) {
$this->repository->insert($obj);
}
}
我不想測試插入數據庫的工作,因爲我認爲它工作(這是一個不同的單位)。我也不想測試foreach,因爲顯然foreach會起作用。所以這裏唯一要測試的是$ objs是一個格式良好的數組。但是如果$ objs是我將要傳入的模擬數據......那麼這是否意味着沒有什麼可以測試這個函數呢?
我猜存儲庫是'insertObjects'的外部依賴項方法,因此您可以測試'Repository :: insert()'方法是否被稱爲_n_(數組大小)次。 – Crozin 2014-10-03 06:25:40
我喜歡這個想法,但在實踐中感覺非常多餘。如果我有一個n項的數組,並且我在foreach循環中遍歷它們,那麼它當然會被調用n次。假設構造(foreach)是一個已經進行過單元測試的獨立單元。 – allenylzhou 2014-10-03 06:29:25
你需要模擬'$ this-> repository'。首先你應該閱讀[嘲笑](https://phpunit.de/manual/current/en/test-doubles.html)。如果您還有其他問題,我可以幫助 – hek2mgl 2014-10-03 06:30:22