我有內置的超薄像這樣的API:如何爲構建在Slim Framework中的REST API編寫單元測試?
$app->group('/'.$endpoint, function() use ($app, $endpoint) {
$handler = Api\Rest\Handlers\Factory::load($endpoint);
if (is_null($handler)) {
throw new \Exception('No REST handler found for '.$endpoint);
}
$app->get('(/:id)', function ($id) use ($app, $handler) {
echo json_encode($handler->get($id));
});
$app->post('', function() use ($app, $handler) {
echo json_encode($handler->post($app->request->post()));
});
$app->put(':id', function ($id) use ($app, $handler) {
echo json_encode($handler->put($id, $app->request->put()));
});
$app->delete(':id', function ($id) use ($app, $handler) {
echo json_encode($handler->delete($id));
});
});
$endpoint
是一個字符串,例如「用戶」;
我該如何着手編寫單元測試呢?
理想情況下,
class RestUserTest extends PHPUnitFrameworkTestCase
{
public function testGet()
{
$slim = ''; // my slim app
// set route 'api/user/1' with method GET
// invoke slim
// ensure that what we expected to happen did
}
}
(其餘的處理程序類將使它瑣碎嘲笑那些通常由DB備份的結果。)
它是如何欺騙請求轉換成苗條,我穿上」的細節問題不知道該怎麼辦。
你不需要添加路由到'$ app'來使用它來測試不僅僅是一個空的Slim服務器嗎?也許你可以張貼一些代碼來展示你如何使用它來測試一條路線? – rinogo
另外,不應該存儲'Environment :: mock()'的結果,因此它可以用於'\ Slim \ Http \ Request :: createFromEnvironment($ environment)'之類的東西。我一直盯着這段代碼,乍看之下看起來不錯,但我不知道如何使用它......也許這對Slim 2來說有意義,但Slim 3需要一個完全不同的方法? – rinogo
這種方法看起來更加完整和Slim 3-esque:http://stackoverflow.com/a/36111988/114558(有關詳細信息,請參閱答案鏈接中的完整文章) – rinogo