代码之家  ›  专栏  ›  技术社区  ›  Dimitrios Desyllas

为什么我不能断言工作已经被分派了?

  •  0
  • Dimitrios Desyllas  · 技术社区  · 6 年前

    我有以下Laravel控制器:

    namespace App\Controller;
    
    use App\Jobs\MyJob;
    
    class JobDispatchControler
    {
       public function callJob(Request $request)
       {
         MyJob::dispatch();
       }
    }
    
    

    上面的控制器有以下路径:

    Route::get('/job',"\App\Controller\JobDispatchControler@callJob");
    

    我想测试一下 /job MyJob 职务:

    namespace Test\App\MyJob;
    
    use Illuminate\Foundation\Testing\TestCase;
    use Illuminate\Support\Facades\Queue;
    use App\Jobs\MyJob;
    
    class TestDispatchJob extends TestCase
    {
       public function testJobDispatch()
       {
         Queue::fake();
         self::get("/job");
         Queue::assertPushed(MyJob::class);
       }
    }
    

    Time: 4.63 seconds, Memory: 34.00 MB
    
    There was 1 failure:
    
    1) Test\App\MyJob::testJobDispatch
    The expected [App\Jobs\MyJob] job was not pushed.
    
    /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/QueueFake.php:33
    /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:237
    /var/www/html/tests/App/MyJob/TestDispatchJob.php:26
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.
    
    

    你知道我为什么不能断言我的工作没有被分派吗?

    编辑1

    根据这个 article

    namespace Test\App\MyJob;
    
    use Illuminate\Foundation\Testing\TestCase;
    use Illuminate\Support\Facades\Bus;
    use App\Jobs\MyJob;
    
    class TestDispatchJob extends TestCase
    {
       public function testJobDispatch()
       {
         Bus::fake();
         self::get("/job");
         Bus::assertDispatched(MyJob::class);
       }
    }
    

    仍然会出现以下错误:

    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.
    
    Time: 4.63 seconds, Memory: 34.00 MB
    
    There was 1 failure:
    
    1) Test\App\MyJob::testJobDispatch
    The expected [App\Jobs\MyJob] job was not dispatched.
    
    /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/BusFake.php:32
    /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:237
    /var/www/html/tests/App/MyJob/TestDispatchJob.php:26
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.
    

    但是一次而不是触发 get

    namespace Test\App\MyJob;
    
    use Illuminate\Foundation\Testing\TestCase;
    use Illuminate\Support\Facades\Bus;
    use App\Jobs\MyJob;
    
    class TestDispatchJob extends TestCase
    {
       public function testJobDispatch()
       {
         Bus::fake();
         MyJob::dispatch();
         Bus::assertDispatched(MyJob::class);
       }
    }
    
    0 回复  |  直到 6 年前