1

我遇到了奇怪的错误。就像我在网上看到的所有常见功能一样,我的 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()

任何想法发生了什么?,我在网上看到的大多数教程都使用这些常用方法,这些在我的代码中抛出错误..为什么?

4

1 回答 1

0

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

namespace Tests\Unit;

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

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

于 2020-07-22T14:02:30.317 回答