我應該如何測試控制器?首先,我嘲笑數據庫結果,這很明顯。但那又如何?我應該重寫控制器的代碼,並測試所有查詢以防止模仿嗎?或者更確切的說調用控制器類,並測試整體結果?我的意思是,例如,具有此類:單元測試控制器實踐
class User {
public function foo()
{
// query 1
// query 2
return $someresults;
}
}
我應該測試它這樣的:
class TestUser {
public testFoo()
{
// query1
// assertions
// query2
// assertions
// results asserions
}
}
確切地說像:
class TestUser {
public function testFoo()
{
$user = new User($mockEntityManager);
// assertions on $user object
}
}
什麼是做到這一點的正確方法?測試所有查詢會使代碼翻倍,並在存儲庫類中產生外部查詢問題(不確定是否可以嘲笑)。測試一般結果是好的,但控制器中的方法返回視圖模板,所以我不知道我該如何測試數據庫響應。
有太多可能的答案,或者對於這種格式太好的答案太長。請添加詳細信息以縮小答案集或隔離幾個段落中可以回答的問題。 – Ziumin