AspectMockを使うクラスでyieldを使ってるとき

AspectMockでモッキングするクラス(に依存するクラス)でyieldを使ってると、AspectMockが注入するコードがreturnで値を返そうとするためエラーになる。

PHP Fatal error:  Generators cannot return values using "return" in /...

とりあえずキャッシュコードのreturnをyieldに変えて動かしてたけど、もうissueになっててdev-masterでは解消されているっぽい。

Generators result in fatal error · Issue #50 · Codeception/AspectMock

Composerでdev-masterのモジュールをインストールする(”minimum-stability”: “dev”にしてもいいけどこれだと全モジュールのdev-masterが入る)

"require-dev": {
   ...
   "codeception/aspect-mock": "dev-master"
   ...
}

上記修正は返り値のキーワードをPHPDOCの@returnで判別するものなので、AspectMockのキャッシュを消して、yieldを使ってるメソッドのPHPDOCの@returnに \Generator を書く(Generatorだけだとだめだった)

/**
 * @param $name
 * @return \Generator
 */
public function generatorMethod($name)

これで動いた。AspectMock黒魔術感あってハマると苦しい…。