Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何测试从另一个函数获取返回数据的函数?_Php_Phpunit - Fatal编程技术网

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

Php 如何测试从另一个函数获取返回数据的函数?,php,phpunit,Php,Phpunit,我是新来PHP单元的,现在我遇到了一个进退两难的问题 功能结构是这样的: function myfunc($arg) { $data = $anotherobject->myfunc2($arg); $diffdata = $anotherobject->myfunc3($arg); return $data. " ".arg. " ". $diffdata; } 如何验证输出是否正确?您应该只测试myfunc()输出。如果需要测试myfunc2()、myfunct3(

我是新来PHP单元的,现在我遇到了一个进退两难的问题

功能结构是这样的:

function myfunc($arg) {
  $data = $anotherobject->myfunc2($arg);
  $diffdata = $anotherobject->myfunc3($arg);
  return $data. " ".arg. " ". $diffdata;
}
如何验证输出是否正确?

您应该只测试myfunc()输出。如果需要测试myfunc2()、myfunct3(),请分别对它们进行测试

function test_myfunc() {
   ...
}

function test_myfunc2() {
   ...
}

function test_myfunc3() {
   ...
}
您应该只测试myfunc()输出。如果需要测试myfunc2()、myfunct3(),请分别对它们进行测试

function test_myfunc() {
   ...
}

function test_myfunc2() {
   ...
}

function test_myfunc3() {
   ...
}
编辑: 贾西尔当然也是对的。单元测试的目的是测试一个尽可能小的单元。因此,您还需要对myfunc2()和myfunc3()进行测试

编辑结束

,可以设置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'));
        }
    }
?>

编辑: 贾西尔当然也是对的。单元测试的目的是测试一个尽可能小的单元。因此,您还需要对myfunc2()和myfunc3()进行测试

编辑结束

,可以设置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'));
        }
    }
?>


要验证func1、func2还是func3?我要验证myfunc返回的数据是否正确。我有一点线索,它应该通过使用mock来完成?它实际上是一种面向对象的样式,myfunc2和MyFunc3来自另一个对象@qrazi提供的解决方案是最好的。是否验证func1、func2或func3?我想验证myfunc返回的数据是否正确。我有一点线索,它应该通过使用mock来完成?这实际上是一种面向对象的风格,myfunc2和MyFunc3来自另一个对象@qrazi提供的解决方案是最好的。他是PHP新手,我不认为他能处理PHPUnit测试LoL顺便说一句,你的解决方案很有价值,这让我很清楚。我也知道测试应该由func一个func来完成。他是PHP新手,我不认为他能处理PHPUnit测试。哈哈,顺便说一句,你的解决方案是值得的,这让我很清楚。我也理解测试应该由func一个func完成。