色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php mockery

洪振霞1年前6瀏覽0評論

Mockery是一個PHP的mocking框架,它可以幫助我們測試一些難以測試的代碼。Mockery可以把要測試的類模擬出來,并模擬類里的方法,這樣我們就可以在不用執(zhí)行實際代碼的情況下進行測試。

比如,我們有一個類:

class User {
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}

現在我們可以使用Mockery來模擬User這個類,并模擬getName()方法:

$user_mock = Mockery::mock('User');
$user_mock->shouldReceive('getName')->andReturn('Foo');
$this->assertEquals('Foo', $user_mock->getName());

在這個例子中,$user_mock是一個模擬的User對象,shouldReceive()方法表示我們期望getName()方法會被調用,并返回'Foo'。在最后一行代碼中,我們斷言模擬對象的返回值與我們期望的一致。

Mockery不僅可以模擬方法,還可以模擬構造函數。假設我們有下面這個類:

class MyClass {
public $name;
public function __construct($name) {
$this->name = $name;
}
}

現在我們可以使用Mockery模擬這個類,并模擬它的構造函數:

$myclass_mock = Mockery::mock('MyClass[getName]', array('Foo'));
$myclass_mock->shouldReceive('getName')->andReturn('Bar');
$this->assertEquals('Bar', $myclass_mock->getName());
$this->assertEquals('Foo', $myclass_mock->name);

在這個例子中,Mockery的第一個參數'MyClass[getName]'表示我們想要模擬的類是MyClass,并指定我們還想要模擬getName()方法。第二個參數是構造函數的參數,這里我們傳遞了'Foo'。在模擬對象上我們還可以調用構造函數的屬性,這個例子中我們期望name屬性的值為'Foo'。最后我們對模擬對象的getName()方法和name屬性做了兩個斷言。

此外,Mockery還支持許多高級用法,比如:期望回調、參數協定等等,這些可以讓我們更加靈活地進行mock測試。

總之,Mockery是一個功能強大的PHP mocking框架,它能夠幫助我們在測試代碼的同時節(jié)約時間、減少不必要的開銷。