欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php mock使用

王浩然1年前6瀏覽0評論

在進行測試的時候,我們常常會遇到一些函數或者類沒有完成,或者需要某些依賴性的參數等等問題,甚至在開發中,有時候我們需要在函數未完成之前因為依賴性的問題測試某個類是否按照規范運行。這時候,我們就需要使用Mock技術來進行虛擬對象或虛擬方法。

在PHP中,有很多Mock框架,例如:phpunit、phockito、prophecy等等獨立的mock框架,還有一些優秀的測試框架例如:Codeception和PHPUnit,這些框架都可以很好的解決這個問題。在這里,我們就來介紹一下使用PHP Mock框架來進行測試的具體方法。

首先,安裝Mock框架:

composer require --dev mockery/mockery

安裝成功后,在測試文件中使用如下方法:

use Mockery as m;
$mock = m::mock('ClassName');
$mock->shouldReceive('methodName')
->with($arg1, $arg2, ...)
->andReturn($value1, $value2, ...);

這里創建了一個虛擬對象來模擬沒有完成的類或者依賴性的問題,這樣我們就可以進行測試了。例如:

class Foo
{
public function calc($a, $b) 
{
return $a + $b;
}
}
class Bar
{
protected $foo;
public function __construct(Foo $foo)
{
$this->foo = $foo;
}
public function doSomething()
{
return $this->foo->calc(1, 2);
}
}
public function testBar()
{
$fooMock = m::mock('Foo');
$fooMock->shouldReceive('calc')->with(1, 2)->once()->andReturn(3);
$bar = new Bar($fooMock);
$this->assertEquals(3, $bar->doSomething());
}

在這個例子中,我們假設Foo類的calc方法還沒有實現。我們通過創建一個Foo模擬來模擬這個類,然后我們可以調用Foo對象中的calc方法,期望它返回3,這樣我們就可以測試Bar類中doSomething方法的結果了。

Mock框架提供了豐富的API,我們可以根據需要自由構建常規、部分或者完全虛擬的對象或者方法,通過這些API,我們可以很好的解決依賴性的問題,也可以保證我們測試結果的可靠性。它可以讓我們在不完全實現某些內容的時候對特定代碼進行測試,同時也可以很好的給調試帶來更加嚴格的保證。所以在PHP代碼測試中,Mock框架是非常實用和必要的一部分。