Comparte:
Test no pasan al implementar IncludeAuthorTest
Del curso Desarrollo de una API con Laravel en el capitulo 44 Implementando Include y links del autor. Al implementar la clase IncludeAuthorTest ambos tests
can_include_related_author_of_an_article() y can_include_related_authors_of_multiple_articles() fallan y causan errores al realizar las implementaciones en otros tests como el de la clase IncludeCategoryTest en todos los metos dentro de esta
can_include_related_author_of_an_article() y can_include_related_authors_of_multiple_articles() fallan y causan errores al realizar las implementaciones en otros tests como el de la clase IncludeCategoryTest en todos los metos dentro de esta
Unable to find JSON:
[{
"included": [
{
"type": "authors",
"id": "24c1540a-f749-41b5-ba8b-164f13a8bb80",
"attributes": {
"name": "Glenna Hegmann"
}
}
]
}]
within response JSON:
[{
"message": "Call to undefined method Illuminate\\Http\\Resources\\MissingValue::getResourceType()",
"exception": "Error",
"file": "D:\\laragon\\www\\api\\app\\JsonApi\\Traits\\JsonApiResource.php",
"line": 33,
"trace": [
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Http\\Resources\\Json\\JsonResource.php",
"line": 95,
"function": "toArray",
"class": "App\\Http\\Resources\\CategoryResource",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Http\\Resources\\Json\\JsonResource.php",
"line": 241,
"function": "resolve",
"class": "Illuminate\\Http\\Resources\\Json\\JsonResource",
"type": "->"
},
{
"function": "jsonSerialize",
"class": "Illuminate\\Http\\Resources\\Json\\JsonResource",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Http\\JsonResponse.php",
"line": 84,
"function": "json_encode"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\symfony\\http-foundation\\JsonResponse.php",
"line": 51,
"function": "setData",
"class": "Illuminate\\Http\\JsonResponse",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Http\\JsonResponse.php",
"line": 32,
"function": "__construct",
"class": "Symfony\\Component\\HttpFoundation\\JsonResponse",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\ResponseFactory.php",
"line": 101,
"function": "__construct",
"class": "Illuminate\\Http\\JsonResponse",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Http\\Resources\\Json\\ResourceResponse.php",
"line": 45,
"function": "json",
"class": "Illuminate\\Routing\\ResponseFactory",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Http\\Resources\\Json\\JsonResource.php",
"line": 231,
"function": "toResponse",
"class": "Illuminate\\Http\\Resources\\Json\\ResourceResponse",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
"line": 815,
"function": "toResponse",
"class": "Illuminate\\Http\\Resources\\Json\\JsonResource",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
"line": 802,
"function": "toResponse",
"class": "Illuminate\\Routing\\Router",
"type": "::"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
"line": 724,
"function": "prepareResponse",
"class": "Illuminate\\Routing\\Router",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 128,
"function": "Illuminate\\Routing\\{closure}",
"class": "Illuminate\\Routing\\Router",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\app\\Http\\Middleware\\ValidateJsonApiDocument.php",
"line": 27,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 167,
"function": "handle",
"class": "App\\Http\\Middleware\\ValidateJsonApiDocument",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\app\\Http\\Middleware\\ValidateJsonApiHeaders.php",
"line": 33,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 167,
"function": "handle",
"class": "App\\Http\\Middleware\\ValidateJsonApiHeaders",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Middleware\\SubstituteBindings.php",
"line": 50,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 167,
"function": "handle",
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Middleware\\ThrottleRequests.php",
"line": 126,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Middleware\\ThrottleRequests.php",
"line": 102,
"function": "handleRequest",
"class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Middleware\\ThrottleRequests.php",
"line": 54,
"function": "handleRequestUsingNamedLimiter",
"class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 167,
"function": "handle",
"class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 103,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
"line": 726,
"function": "then",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
"line": 701,
"function": "runRouteWithinStack",
"class": "Illuminate\\Routing\\Router",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
"line": 665,
"function": "runRoute",
"class": "Illuminate\\Routing\\Router",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
"line": 654,
"function": "dispatchToRoute",
"class": "Illuminate\\Routing\\Router",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php",
"line": 167,
"function": "dispatch",
"class": "Illuminate\\Routing\\Router",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 128,
"function": "Illuminate\\Foundation\\Http\\{closure}",
"class": "Illuminate\\Foundation\\Http\\Kernel",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php",
"line": 21,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull.php",
"line": 31,
"function": "handle",
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 167,
"function": "handle",
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php",
"line": 21,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TrimStrings.php",
"line": 40,
"function": "handle",
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 167,
"function": "handle",
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize.php",
"line": 27,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 167,
"function": "handle",
"class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance.php",
"line": 86,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 167,
"function": "handle",
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\fruitcake\\laravel-cors\\src\\HandleCors.php",
"line": 52,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 167,
"function": "handle",
"class": "Fruitcake\\Cors\\HandleCors",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Http\\Middleware\\TrustProxies.php",
"line": 39,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 167,
"function": "handle",
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
"line": 103,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php",
"line": 142,
"function": "then",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php",
"line": 111,
"function": "sendRequestThroughRouter",
"class": "Illuminate\\Foundation\\Http\\Kernel",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Testing\\Concerns\\MakesHttpRequests.php",
"line": 509,
"function": "handle",
"class": "Illuminate\\Foundation\\Http\\Kernel",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Testing\\Concerns\\MakesHttpRequests.php",
"line": 475,
"function": "call",
"class": "Illuminate\\Foundation\\Testing\\TestCase",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\tests\\MakesJsonApiRequests.php",
"line": 38,
"function": "json",
"class": "Illuminate\\Foundation\\Testing\\TestCase",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Testing\\Concerns\\MakesHttpRequests.php",
"line": 305,
"function": "json",
"class": "Tests\\TestCase",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\tests\\Feature\\V1\\Articles\\IncludeAuthorTest.php",
"line": 24,
"function": "getJson",
"class": "Illuminate\\Foundation\\Testing\\TestCase",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\phpunit\\phpunit\\src\\Framework\\TestCase.php",
"line": 1545,
"function": "can_include_related_author_of_an_article",
"class": "Tests\\Feature\\V1\\Articles\\IncludeAuthorTest",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\phpunit\\phpunit\\src\\Framework\\TestCase.php",
"line": 1151,
"function": "runTest",
"class": "PHPUnit\\Framework\\TestCase",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\phpunit\\phpunit\\src\\Framework\\TestResult.php",
"line": 726,
"function": "runBare",
"class": "PHPUnit\\Framework\\TestCase",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\phpunit\\phpunit\\src\\Framework\\TestCase.php",
"line": 903,
"function": "run",
"class": "PHPUnit\\Framework\\TestResult",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\phpunit\\phpunit\\src\\Framework\\TestSuite.php",
"line": 677,
"function": "run",
"class": "PHPUnit\\Framework\\TestCase",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\phpunit\\phpunit\\src\\Framework\\TestSuite.php",
"line": 677,
"function": "run",
"class": "PHPUnit\\Framework\\TestSuite",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\phpunit\\phpunit\\src\\TextUI\\TestRunner.php",
"line": 670,
"function": "run",
"class": "PHPUnit\\Framework\\TestSuite",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\phpunit\\phpunit\\src\\TextUI\\Command.php",
"line": 143,
"function": "run",
"class": "PHPUnit\\TextUI\\TestRunner",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\phpunit\\phpunit\\src\\TextUI\\Command.php",
"line": 96,
"function": "run",
"class": "PHPUnit\\TextUI\\Command",
"type": "->"
},
{
"file": "D:\\laragon\\www\\api\\vendor\\phpunit\\phpunit\\phpunit",
"line": 98,
"function": "main",
"class": "PHPUnit\\TextUI\\Command",
"type": "::"
}
]
}].
Failed asserting that an array has the subset Array &0 (
'included' => Array &1 (
0 => Array &2 (
'type' => 'authors'
'id' => '24c1540a-f749-41b5-ba8b-164f13a8bb80'
'attributes' => Array &3 (
'name' => 'Glenna Hegmann'
)
)
)
).
la comparativa de la respuesta resulta en lo siguiente
diferencias
Utilizo laravel: 9.0
PHP: 8.0.2
PHPUnit 9.5.13
Revisa que estés llamando al método allowedIncludes