2

次のクラスがあるとします。

class Document
{
  private file;

  public function setFile(UploadedFile $file)
  {
    $this->file = $file;
  }

  public function getExt()
  {
    return $this->file->guessExtension();
  }
}

getExt() メソッドをテストしたいと思います。次のようにテストを設定しようとしました。

$file = $this->getMock('UploadedFile');

$file->expects($this->at(0))
  ->method('guessExtension')
  ->will($this->returnValue('png'));

$doc = new Document();
$doc->setFile($file);
...

ただし、 setFile() が UploadedFile のインスタンスを期待しており、代わりにモック オブジェクトが見つかったというエラーが表示されます。この種のシナリオをテストする方法について、誰かが光を当てることができますか? モックとスタブを使ったテストに関しては、私は初心者です。

ありがとう!

4

2 に答える 2

0

fabさん コメントありがとうございます。次の変更を加えて動作させました。

$file = $this->getMockBuilder('Symfony\Component\HttpFoundation\File\UploadedFile')
        ->disableOriginalConstructor()
        ->getMock();
于 2013-05-20T01:05:42.377 に答える
-1

PHP 5.5.16 以降、Chieh ソリューションは使用できなくなりました。参照を参照してください。

考えられる解決策は、一時的なダミー ファイルを作成して/tmpコンストラクタsetUp()/tearDown()に渡すことです。次に、必要なものを返すために必要なメソッドをモックしました。

UploadedFile2つのパラメータを渡す必要があります

于 2014-10-22T16:19:39.453 に答える