我正在尝试使用phpunit测试用laravel faramework编写的REST API。 这是我的 api.php 文件代码
Route::group([
'middleware' => ['cors','db.select'],
'prefix' => 'v1/{database}',
], function() {
Route::resource('test-beds', 'TestBedController');
});
cors middleware 允许发送跨源资源共享,而 db.select中间件由我创建,从路由中删除{database}
变量。< / p>
在我的 TestBedController 中,如果我没有使用post方法发送 id字段,则会使用HTTP状态代码422给出响应。要验证我是否已使用写下面的代码。
这是我的 TestBedApiTest.php 文件
class TestBedApiTest extends TestCase {
public function testRequiresId() {
// I tried by adding and removing following line but no luck
$this->WithoutMiddleware();
$this->json('POST', 'test-beds')->assertResponseStatus(422);
}
}
但它让我 404 ,这很可能是因为它无法找到路线测试床。我尝试了以下代码,但没有运气
$this->json('POST', 'v1/db1/test-beds')->assertResponseStatus(422);
$this->json('POST', 'api/v1/db1/test-beds')->assertResponseStatus(422);
$this->json('POST', 'api/v1/test-beds')->assertResponseStatus(422);
$this->json('POST', 'v1/{database}/test-beds')->assertResponseStatus(422);
答案 0 :(得分:-1)
通过使用PHP单元&amp; amp;来测试API是个好主意。喝酒失控 第1步下载PHP单元&amp; guzzle该库帮助我们向API发出请求。 你可以通过像
这样的命令安装两个作曲家$ composer require guzzlehttp/guzzle:^6.1 phpunit/phpunit:^5.0
将您包含的库安装到autoload.php
然后在api中开发测试类之后再运行函数名setup()
然后通过实现你的功能来测试你的api。