我是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提供的解决方案是最好的。 –