0

私は PHP Unit が初めてで、今はジレンマがあります。

関数構造は次のようなものです。

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

出力が本来あるべきものであることを確認するにはどうすればよいですか?

4

2 に答える 2

2

編集:Jasirももちろん正しいです。ユニットテストのポイントは、ユニットをできるだけ小さくテストすることです。したがって、myfunc2() と myfunc3() をカバーするテストも作成します。

編集終了

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'));
        }
    }
?>
于 2013-02-01T08:04:55.087 に答える
1

myfunc()出力のみをテストする必要があります。myfunc2()、myfunct3()をテストする必要がある場合は、それらに対して個別のテストを行います。

function test_myfunc() {
   ...
}

function test_myfunc2() {
   ...
}

function test_myfunc3() {
   ...
}
于 2013-02-01T08:02:37.947 に答える