【问题标题】:how to fix undefined method errors in Laravel 7.x phpunit?如何修复 Laravel 7.x phpunit 中未定义的方法错误?
【发布时间】:2020-07-20 00:26:08
【问题描述】:

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

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

【问题讨论】:

    标签: unit-testing phpunit laravel-7 laravel-7.x


    【解决方案1】:

    您扩展了错误的 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

    【讨论】:

    • 是的,经过几天的 google 爬网,我昨天解决了这个问题。这很奇怪,为什么 laravel 选择通过 dedault 来扩展 thar 方式
    猜你喜欢
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 2018-08-19
    • 1970-01-01
    相关资源
    最近更新 更多