More Related Content
Similar to AspectMock 最強のモッキングフレームワーク (20)
AspectMock 最強のモッキングフレームワーク
- 7. 設定例require __DIR__.'/../vendor/autoload.php'; // Composerのオートローダ
$kernel = AspectMockKernel::getInstance();
$kernel->init([
'debug' => true,
'includePaths' => [__DIR__.'/../src'],
'cacheDir' => __DIR__.'/cache/AspectMock',
]);
Composerのオートローダを使っている場合
- 10. 静的メソッドの置き換え
構文
test::double('クラス名', ['メソッド名' => 返り値]);
@return ClassProxy
例
$fs = test::double('FuelCoreFieldset', ['repopulate' => true]);
$model_mail = test::double(
'Model_Mail',
['send' => function() { throw new EmailSendingFailedException; }]
);
- 13. メソッド呼び出しの検証
例
$user = test::double(new User, ['getName' => 'davert']);
$this->assertEquals('davert', $user->getName());
$user->verifyMethodInvoked('getName'); // 呼び出されたか?
$user->verifyMethodInvoked('setName', ['davert']); // 引数の指定
$user->verifyMethodInvokedOnce('getName'); // 一度だけ?
$user->verifyMethodNeverInvoked('setName'); // 呼び出されない?
$user->verifyMethodInvokedMultipleTimes('setName', 1); // 呼び出し回数の指定
- 16. 仕組みGo AOPを使いPHPファイルを動的に書き換え
class User
{
function setName($name)
{
$this->name = $name;
}
}
↓
class User
{
function setName($name)
{ if (($__am_res = __amock_before($this, __CLASS__, __FUNCTION__,
array(), false)) !== __AM_CONTINUE__) return $__am_res;
$this->name = $name;
}
}