如何修复 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
我遇到了 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