如何测试从另一个函数获取返回数据的函数?

时间:2013-02-01 07:57:19

标签: php phpunit

我是PHP部门的新手,现在我陷入了两难境地。

功能结构是这样的:

function myfunc($arg) {
  $data = $anotherobject->myfunc2($arg);
  $diffdata = $anotherobject->myfunc3($arg);
  return $data. " ".arg. " ". $diffdata;
}

如何验证输出是否应该是什么?

2 个答案:

答案 0 :(得分:2)

修改: 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'));
        }
    }
?>

答案 1 :(得分:1)

您应该只测试myfunc()输出。如果你需要测试myfunc2(),myfunct3(),可以对它们进行单独的测试。

function test_myfunc() {
   ...
}

function test_myfunc2() {
   ...
}

function test_myfunc3() {
   ...
}