8

別のクラスのインスタンスを返すオブジェクトをテストしています。内部的に、そのクラスは を呼び出しますrequire_once。ただし、返されたオブジェクトがそのタイプであることを確認しようとすると、次のメッセージが表示されます。

InvalidArgumentException: Argument #1 of PHPUnit_Framework_Assert::assertInstanceOf() must be a class or interface name

require_onceを呼び出す前にテストで再度呼び出すと、このメッセージは消えますassertInstanceOf。これは正しくないようです。PHPUnit は、クラスが既にロードされていることを認識できるほどスマートであるように思われるため、もう一度ロードする必要はありません。私はこれを間違って考えていますか?PHPUnit の設定が間違っていますか? テストでこのクラスを再度要求しないようにする方法はありますか?

4

2 に答える 2

2

あなたのユニットはこれに似ているかもしれません:

$this->assertInstanceOf('MyOtherClass', 
    $this->object->someFunctionReturnsOtherClass());

ここ以外は問題ありません。注: オブジェクトの前に phpunit メソッドが呼び出されます。あなたが言ったので、あなたのオブジェクトはすでに内部的に require_once を行っており、メソッドが呼び出されるまで、「MyOtherClass」は未定義のクラスのままです。それがまさに起こったことです。'MyOtherClass' を使用してチェックするように準備された Phpunit 関数は、未定義であることがわかりました!

オブジェクト自身の require_once が呼び出されることさえありませんでした。そのため、事前に自分で電話する必要があります。同様のステートメントを使用すると、true == $returnObject instanceOf MyOtherClassPHP の解析中にクラス定義が見つからなかったため、同じエラーが返されます。

于 2012-05-03T05:34:54.303 に答える