








class Whatever {
public static function registerNewUser(array $item) {
$user = new User;
$user->attributes = $item['user'];
if (Users::model()->countByAttributes($item['email']) > 0) {
throw new Exception('User with this email already exists');
}
if ($user->validate() && $user->save()) {
// password is hashed in `beforeSave()`
Yii::app()->mailer->send($user->email
new UserRegistrationNotification($user);
);
if ($user->isProUser()) {
$manager = new UserSubscriptionManager();
$manager->createSubscriptionPlan($user, $item['pro_details']);
}
if ($item['subscribe_to_newsletter']) {
Newsletters::subscribeUserToAll($user);
}
return true;
}
return false;
}
}

<?php
function testStaticMethod() {
test::double('App\Users', ['tableName' => 'test_table']);
$this->assertEquals('test_table', \App\Users::tableName());
}
<?php
public function testGlobalOverrides()
{
test::double('App\Users', ['getFullName' => 'Peter']);
$user = new \App\Users;
$this->assertEquals('Peter', $user->getFullName());
}
<?php
public function testStatic()
{
$double = test::double('App\Users', ['tableName' => 'test_table']);
$this->assertEquals('test_table', \App\Users::tableName());
$double->verifyInvoked('tableName');
$double->verifyNeverInvoked('save');
}
{
"require": {
"codeception/aspect-mock": "0.4.2"
}
}<?php
include __DIR__.'/../vendor/autoload.php'; // composer autoload
$kernel = \AspectMock\Kernel::getInstance();
$kernel->init(['includePaths' => [__DIR__.'/../src']]);<?php
use AspectMock\Test as Test;
Test::double('OfClass', ['methodName'=>'returnValue'])
<?php
require 'myfile.php';
<?php
require 'php://read=go.source.transforming.loader/resource=myfile.php';
<?php
class User {
function setName($name)
{
$this->name = $name;
}
}<?php
class User {
function setName($name)
{ if (($__am_res = __amock_before($this, __CLASS__, __FUNCTION__, array($name.........
$this->name = $name;
}
}