2
我有一個每週運行一次的報告。這個類基本上是這樣的(僞代碼):單元測試報告腳本
class mailreport {
public function exec() {
users = Users::getAll();
for u in users {
r = this.generateReportData(u);
m = this.generateMail(r);
sendMail(u, m);
}
}
protected generateReport(User u) {
// do lots of calculation, return report
}
// ...
}
大多數本報告中的錯誤都在generateReport
- 方法。它也做了很多漂亮的「純粹」計算,並且如果它沒有被保護,很容易進行單元測試。該exec
- 方法是很難測試,因爲它有幾個依賴和輸出是一個HTML電子郵件發送。
我應該如何打出來的generateReport
- 方法,所以我可以單元測試更容易嗎?當然,我可以創建某種Report
-class與公共generate
- 方法,但後來爲什麼不只是有一個獨立的功能?