laravelでAPIのテストを作成する際に問題があります。私[email protected]
はこのようになりますが(私は郵便配達してテストし、それが正常に動作します)Laravel json APIのphpunitでテストを書く
Route::group(['middleware' =>'api', 'prefix' => '/api/v1', 'namespace' => 'Api\V1'], function() {
Route::post('/login', 'Auth\[email protected]');
Route::group(['middleware' =>'jwt.auth'], function() {
Route::post('/projects', '[email protected]');
...
});
});
:ここではどのように私のroutes.phpを見て
public function postProjects() {
$project = new Project;
$project->fill(request()->all());
$project->user_id = Auth::user()->id;
$project->save();
return ['project_id' => $project->id];
}
私はJWTのクッキーを使用して、認証のために自分のmiddelwareを書くいます詳細は
hereに記載されている。しかし、私のテストでは、私はミドルウェア()をオフにして、ログインユーザ(
actingAs($user)
- 自分のDBにユーザ(ID = 1)がある)として動作させようとします。私のテストは、(私は
this documentationを使用して、それを書いた)のようになります。
<?php
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use App\Models\User;
class ProjectsTest extends TestCase
{
use WithoutMiddleware;
/**
* A basic functional test example.
*
* @return void
*/
public function testBasicExample()
{
$user = User::find(1);
$this->actingAs($user)
->json('POST', '/projects', ['name' => 'Project_test_name' ])
->seeJson([
'project_id' => 1,
]); // THIS IS LINE 26
}
}
しかし、私はvendor/bin/phpunit
の実行中に次のエラーを取得する:
Time: 182 ms, Memory: 13.75MB
There was 1 error:
1) ProjectsTest::testBasicExample ErrorException: Invalid argument supplied for foreach()
/Users/Kamil/Desktop/Code/kumarajiva.com/vendor/laravel/framework/src/Illuminate/Support/Arr.php:494 /Users/Kamil/Desktop/Code/kumarajiva.com/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php:232 /Users/Kamil/Desktop/Code/kumarajiva.com/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php:257 /Users/Kamil/Desktop/Code/kumarajiva.com/tests/ProjectsTest.php:26
FAILURES! Tests: 2, Assertions: 2, Errors: 1.
任意のアイデアこのエラーをどうしますか?
大変ありがとうございます! Te - > dump()は非常に便利です:)。私は些細な間違いを犯しました - 私はテストでapi/v1プレフィックスを忘れていました: ' - > json( 'POST'、 'api/v1/projects' ...' –