場合によっては、ServiceManagerからフルクラス名でインスタンスを取得しています。次に例を示します。
$someThing = $serviceManager->get('MyModule\Some\Nice\Lib\SomeThing');
これはHTTPMVCリクエストに対してはかなりうまく機能しますが、phpunitを使用している場合、ServiceManagerはそれを見つけることができません。(「 ...のインスタンスをフェッチまたは作成できませんでしたZend\ServiceManager\Exception\ServiceNotFoundException
」というメッセージとともに例外をスローします)Zend\ServiceManager\ServiceManager::get
ドキュメントのデフォルトのテストブートストラップの例を使用していますが、異なるmashineの2つの異なるプロジェクトでこの問題が発生しているため、これは一般的な問題だと思います。
私の最初の推測は、MVCまたはアプリケーションと関係があるということでした。これは、テストとhttpの唯一の本当の違いである可能性が高いためです。私は両方のモードでSMインスタンスをダンプし、それらを相互に比較し、ソースを調べてWebを検索しました。
残念ながら、労働契約のため、コードを貼り付けることができません。ただし、先ほど申し上げましたように、これは一般的な問題なので、簡単に再現できるはずです。
この問題の原因とその解決方法を知っている人はいますか?