【问题标题】:Laravel 5 Symfony\Component\HttpKernel\Exception\NotFoundHttpException: POST http://localhost/myproject/public/leadsLaravel 5 Symfony\Component\HttpKernel\Exception\NotFoundHttpException: POST http://localhost/myproject/public/leads
【发布时间】:2020-03-19 07:55:14
【问题描述】:

我使用 Laravel 5.8 并且有这样的测试方法

public function test_store()
{
   $attribute= ['lead_name'=>'test_name','lead_family'=>'test_family'];
   $this->post('/leads', $attribute);
   $this->assertDatabaseHas('leads',  $attribute);
}

和这样的控制器:

class LeadController extends Controller
{
   public function store(Request $request)
   {
       Lead::create($request->all());
   }
}

和路线:

Route::resource('/leads', 'App\Http\Controller\LeadController');

当我运行 phpunit 时显示此错误:

Symfony\Component\HttpKernel\Exception\NotFoundHttpException: POST http://localhost/myproject/public/leads

C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Foundation\Testing\Concerns\InteractsWithExceptionHandling.php:118 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:326 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:120 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Foundation\Testing\Concerns\MakesHttpRequests.php:375 C:\wamp64\www\myproject\vendor\laravel\framework\src\Illuminate\Foundation\Testing\Concerns\MakesHttpRequests.php:197 C:\wamp64\www\myproject\tests\Feature\Customer\LeadTest.php:38 我用 Postman 测试了leads URL,它工作正常。

我看到并阅读了这篇帖子https://stackoverflow.com/questions/23593892/symfony-component-httpkernel-exception-notfoundhttpexception-laravel

【问题讨论】:

  • 你可以运行php artisan route:list 看看你有没有预定的路线
  • 是的,它存在。我用邮递员测试了它,它工作正常。
  • 在这种情况下,我建议尝试清除缓存并执行 composer dump autoload。看看有没有帮助
  • 我做了但没用

标签: php laravel symfony laravel-5 phpunit


【解决方案1】:

这样设置你的路由器

Route::resource('leads', 'LeadController');

确保将LeadController 放在app/Http/Controller

阅读Laravel - Route::resource vs Route::controller

【讨论】:

  • 路由是真的,因为我用邮递员测试过它并且它工作正常
  • 你有teamviwer吗?
  • 我知道,但是在我们的办公室里禁止远程访问其他人
  • 打开控制台并运行php artisan cache:clearphp artisan route:clearcomposer dumpautload并检查
【解决方案2】:

我解决了。我改成config\app.php文件

'url' =>'http://localhost/myscript_addres/public',

'url' =>'http://localhost/',

【讨论】:

    猜你喜欢
    • 2014-06-28
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 2014-08-13
    • 2021-04-28
    • 1970-01-01
    相关资源
    最近更新 更多