В моем приложении Laravel
есть следующий контроллер:
class ProjectController extends Controller {
...
public function index() {
$projects = Project::where('is_completed', false)
->orderBy('created_at', 'desc')
->withCount(['tasks' => function ($query) {
$query->where('is_completed', false);
}])->get();
return response()->json($projects);
}
...
}
, на который ссылается следующий маршрут:
Route::get('projects', 'ProjectController@index');
Когда я перехожу на URL: http://localhost:8000/api/projects
Я получаю:
[
{
"id": 2,
"name": "Project 02 Title",
"description": "Project 02 Description",
"is_completed": 0,
"created_at": "2018-10-13 16:23:28",
"updated_at": "2018-10-13 16:23:28",
"tasks_count": 0
},
{
"id": 1,
"name": "Project 01 Title",
"description": "Project 01 Description",
"is_completed": 0,
"created_at": "2018-10-13 16:22:52",
"updated_at": "2018-10-13 16:22:52",
"tasks_count": 0
}
]
Кроме того, у меня есть следующий тестовый файл:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ProjectTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testExample()
{
$response = $this->get('/');
// this is not working:
// $response->assertJson([ 0 => [ 'name' => 'Project 02 Title' ] ]);
}
}
?>
Что я хочу сделать на testExample()
, это проверить, является ли name
членпервый элемент в выходном массиве (в формате JSON
) имеет строковое значение: Project 02 Title
.
Есть идеи, как этого добиться?
Спасибо!