shouldReceive('send')->andReturn('mock data');
});
$sEnty = new App\Sms();
var_dump($sEnty->send());
// output "mock data"在上面的例子中,我們使用了phpunit框架繼承自PHPUnit_Framework_TestCase類的mock方法來模擬了App\\Sms類中的send方法并返回字符串"mock data"。執(zhí)行完mock之后,我們實(shí)例化Sms類并調(diào)用send方法,輸出的將是我們定義的mock字符串。
在實(shí)際開發(fā)中,我們還可以利用mock接口來模擬各種接口返回?cái)?shù)據(jù)及狀態(tài)碼:
public function testMockGetApi() {
$mock = \Mockery::mock(API::class)
->shouldReceive('get')
->with('http://api.example.com/user/1')
->once()
->andReturn([
'id' =>1,
'name' =>'Lucas',
'email' =>'example@gmail.com'
]);
$this->app->instance(API::class, $mock->getMock());
$response = $this->get('/users/1');
$response->assertStatus(200);
$response->assertJson([
'data' =>[
'id' =>1,
'name' =>'Lucas',
'email' =>'example@gmail.com'
]
]);
}
在這個(gè)例子中,我們使用了laravel phpunit包和mockery庫(kù)來模擬了API::class中的get方法,并且返回一個(gè)模擬的json數(shù)據(jù)。接著我們將API::class的實(shí)例指定為我們新建的mock對(duì)象,并對(duì)路由"/users/1"發(fā)起get請(qǐng)求。最后,我們對(duì)返回的數(shù)據(jù)進(jìn)行狀態(tài)碼和json數(shù)據(jù)的校驗(yàn),一切順利,mock接口被成功使用。
總結(jié)來說,mock接口能夠幫助我們?cè)陂_發(fā)過程中解決依賴其他接口的問題,并且方便測(cè)試過程中模擬和驗(yàn)證接口的數(shù)據(jù)的正確性。