如何修复 Laravel 7.x phpunit 中的未定义方法错误?

how to fix undefined method errors in Laravel 7.x phpunit?

我遇到了 st运行ge 错误。就像我在网上看到的所有常见功能一样,在我的 phpunit 中没有定义..

我运行这样的测试

./vendor/bin/phpunit

我的代码是这样的

namespace Tests\Unit;

    use PHPUnit\Framework\TestCase;
    use Illuminate\Foundation\Testing\DatabaseMigrations;
    use Illuminate\Foundation\Testing\WithoutMiddleware;
    
    
    class AppTest extends TestCase
    {
    
    
        use DatabaseMigrations;
        use WithoutMiddleware;
    
    
        /** @test */
        public function test_can_push_data() {
    
            $paramData = [
                'param1' => 'value1',
                'param2' => 'value2',
    
            ];
    
            $response = $this->json('POST', route('app.push'), $paramData);
    
            $response->assertStatus(200);
        }
    
    }

我遇到了这个错误

1) Tests\Unit\AppTest::test_can_push_data
Error: Call to undefined method Tests\Unit\AppTest::json()

我也注意到其他功能出现错误,我不知道为什么

$this->post()
$this->get()

知道这是怎么回事吗?我在网上看到的大多数教程都使用这些常用方法,而这些方法在我的代码中引发错误..为什么?

您扩展错误 TestCase class。 PHPUnit 的 TestCase class 没有这些方法。您正在寻找 Illuminate\Foundation\Testing\TestCase class。这将允许您的测试使用文档中的方法:

namespace Tests\Unit;

    use Illuminate\Foundation\Testing\TestCase;
    use Illuminate\Foundation\Testing\DatabaseMigrations;
    use Illuminate\Foundation\Testing\WithoutMiddleware;
    
    
    class AppTest extends TestCase
    ...

值得注意的是,创建您自己的 TestCase class 通常很有用,以提供常用的自定义功能。它通常位于 Tests\TestCase