0
類中的方法中實例化一個對象,我測試的樣子:是否有可能嘲笑被測試
function X($arg)
{
// Code ...
$object = new Object;
// Code ...
}
有沒有辦法來嘲笑那個對象?
類中的方法中實例化一個對象,我測試的樣子:是否有可能嘲笑被測試
function X($arg)
{
// Code ...
$object = new Object;
// Code ...
}
有沒有辦法來嘲笑那個對象?
不能在單元測試中使用PHPUnit模擬對象,您不能。
根據你如何加載你的類,你將能夠創建一個「模擬」類來取代該對象。這將是這樣的:
您的測試文件:
class Object {
<mock functionality here>
}
class TestCase extends PHPUnit_Framework_TestCase {
<your tests>
}
但是,如果你想在另外一個測試來實際測試Object
這會導致問題。在這種情況下,您將收到一個致命錯誤,指出您無法重新定義班級。 這不是最佳做法。
最好的辦法是重構類,以便使用依賴注入。更改該類,以便將Object作爲構造函數參數或是方法簽名的一部分。
這篇文章可能會有所幫助:http://misko.hevery.com/2008/07/08/how-to-think-about-the-new-operator/
謝謝,我會使用依賴注入normaly,但我測試的代碼我沒寫,也沒有依賴注入,它有脂肪,真正的脂肪控制器。 – teeyo 2014-10-31 15:37:48
對於控制器,我發現你最終會得到大多數人認爲是「集成」測試的東西。通過這種方式,您可以對API進行初始端到端測試,讓您使用DI – Schleis 2014-10-31 15:53:13
重構我開始感覺到我正在重複自我,使用PHPUnit進行功能測試並接受Behat驗證測試,我想我我們將繼續爲模型和助手進行單元測試,併爲控制器進行驗收測試。 – teeyo 2014-11-03 08:41:56