我是PHP單位的新手,現在我有一個困境。如何測試從其他函數獲取返回數據的函數?
功能結構是這樣的:
function myfunc($arg) {
$data = $anotherobject->myfunc2($arg);
$diffdata = $anotherobject->myfunc3($arg);
return $data. " ".arg. " ". $diffdata;
}
我怎樣才能verifiy輸出是它應該是什麼?
我是PHP單位的新手,現在我有一個困境。如何測試從其他函數獲取返回數據的函數?
功能結構是這樣的:
function myfunc($arg) {
$data = $anotherobject->myfunc2($arg);
$diffdata = $anotherobject->myfunc3($arg);
return $data. " ".arg. " ". $diffdata;
}
我怎樣才能verifiy輸出是它應該是什麼?
編輯: Jasir當然也是正確的。單元測試的重點是測試一個儘可能小的單元。所以你也可以進行測試來覆蓋myfunc2()和myfunc3()。
編輯
Using a stub結束時,你可以設置myfunc2所()和myfunc3()返回一個已知值。然後,您可以像通常那樣聲明myfunc的返回。
線沿線的東西:
<?php
require_once 'SomeClass.php';
class StubTest extends PHPUnit_Framework_TestCase
{
public function testStub()
{
// Create a stub for the SomeClass class.
$stub = $this->getMock('SomeClass');
// Configure the stub.
$stub->expects($this->any())
->method('myfunc2')
->will($this->returnValue('foo'));
$stub->expects($this->any())
->method('myfunc3')
->will($this->returnValue('bar'));
// Calling $stub->doSomething() will now return
// 'foo'.
$this->assertEquals('foo somearg bar', $stub->myfunc('somearg'));
}
}
?>
他是PHP的新手我不認爲他可以處理PHPUnit測試LoL 順便說一句你的解決方案值得 –
謝謝,這使我不清楚的事情。我也明白,測試應該由func完成func。 –
您應該只測試myfunc()輸出。如果您需要測試myfunc2(),myfunct3(),請爲它們分別進行測試。
function test_myfunc() {
...
}
function test_myfunc2() {
...
}
function test_myfunc3() {
...
}
你想驗證FUNC1,FUNC2或FUNC3? –
我想驗證myfunc是否返回正確的數據。我有一點線索,它應該通過使用模擬來完成? 實際上它是一種面向對象的風格,myfunc2和3來自另一個對象 –
從@qrazi提供的解決方案是最好的。 –