Laravel 5.5 测试 - 调用未定义的方法 ::see()
Laravel 5.5 Tests - Call to undefined method ::see()
我在 运行 phpunit
时遇到这个错误
错误:调用未定义的方法Tests\Feature\ViewConcertListingTest::see()
这是我的代码:
class ViewConcertListingTest 扩展了 TestCase
{
使用数据库迁移;
/** @test */
public function user_can_view_a_concert_listing()
{
// Arrange
// Create a concert
$concert = Concert::create([
'title' => 'The Red Chord',
'subtitle' => 'with Animosity and Lethargy',
'date' => Carbon::parse('December 13, 2016 8:00pm'),
'ticket_price' => 3250,
'venue' => 'The Mosh Pit',
'venue_address' => '123 Example Lane',
'city' => 'Laraville',
'state' => 'ON',
'zip' => '17916',
'additional_information' => 'For tickets, call (555) 555-5555'
]);
// Act
// View the concert listing
$this->get('/concerts/' . $concert->id);
// Assert
// See the concert details
$this->see('The Red Chord');
$this->see('with Animosity and Lethargy');
$this->see('December 13, 2016');
$this->see('8:00pm');
$this->see('32.50');
$this->see('The Mosh Pit');
$this->see('123 Example Lane');
$this->see('Laraville, ON 17916');
$this->see('For tickets, call (555) 555-5555');
}
}
有什么帮助吗?
谢谢!
在这种情况下您需要使用 Laravel Dusk:
所以你的断言如下:
$this->browse(function ($browser) use ($user) {
$browser->visit('/concerts/' . $concert->id)
->assertSee('The Red Chord');
->assertSee('with Animosity and Lethargy');
->assertSee('December 13, 2016');
->assertSee('8:00pm');
->assertSee('32.50');
->assertSee('The Mosh Pit');
->assertSee('123 Example Lane');
->assertSee('Laraville, ON 17916');
->assertSee('For tickets, call (555) 555-5555');
});
您必须包含命名空间:
use Tests\DuskTestCase;
use Laravel\Dusk\Chrome;
您指的是 Laravel 5.3 中可用的测试方法吗?这些在 5.4 中被删除并作为单独的包提供; https://github.com/laravel/browser-kit-testing
要安装它们,请使用 composer:
composer require laravel/browser-kit-testing --dev
如果其他人遇到过此错误并且问题的代码看起来很熟悉,这来自 Test-Driven Laravel course from Adam Wathan(强烈推荐!)。
如果您正在学习本课程的早期课程但正在使用 Laravel 5.5,则需要更新一些内容:
- 而不是
$this->get('...');
,使用 $response = $this->get('...');
。
- 而不是
$this->see()
,使用 $response->assertSee()
。
Laravel 已将 HTTP 测试层和辅助方法从 5.3(截屏视频中使用的 Laravel 版本)更新到 5.5。您的 5.5 功能规范应更新为以下内容:
<?php
class ViewConcertListingTest extends TestCase
{
use DatabaseMigrations;
/** @test */
public function user_can_view_a_concert_listing()
{
// Arrange
// Create a concert
$concert = Concert::create([
'title' => 'The Red Chord',
// ...
]);
// Act
// View the concert listing
$response = $this->get('/concerts/' . $concert->id);
// Assert
// See the concert details
$response->assertSee('The Red Chord');
// ...
}
}
我在 运行 phpunit
时遇到这个错误错误:调用未定义的方法Tests\Feature\ViewConcertListingTest::see()
这是我的代码:
class ViewConcertListingTest 扩展了 TestCase { 使用数据库迁移;
/** @test */
public function user_can_view_a_concert_listing()
{
// Arrange
// Create a concert
$concert = Concert::create([
'title' => 'The Red Chord',
'subtitle' => 'with Animosity and Lethargy',
'date' => Carbon::parse('December 13, 2016 8:00pm'),
'ticket_price' => 3250,
'venue' => 'The Mosh Pit',
'venue_address' => '123 Example Lane',
'city' => 'Laraville',
'state' => 'ON',
'zip' => '17916',
'additional_information' => 'For tickets, call (555) 555-5555'
]);
// Act
// View the concert listing
$this->get('/concerts/' . $concert->id);
// Assert
// See the concert details
$this->see('The Red Chord');
$this->see('with Animosity and Lethargy');
$this->see('December 13, 2016');
$this->see('8:00pm');
$this->see('32.50');
$this->see('The Mosh Pit');
$this->see('123 Example Lane');
$this->see('Laraville, ON 17916');
$this->see('For tickets, call (555) 555-5555');
}
}
有什么帮助吗? 谢谢!
在这种情况下您需要使用 Laravel Dusk:
所以你的断言如下:
$this->browse(function ($browser) use ($user) {
$browser->visit('/concerts/' . $concert->id)
->assertSee('The Red Chord');
->assertSee('with Animosity and Lethargy');
->assertSee('December 13, 2016');
->assertSee('8:00pm');
->assertSee('32.50');
->assertSee('The Mosh Pit');
->assertSee('123 Example Lane');
->assertSee('Laraville, ON 17916');
->assertSee('For tickets, call (555) 555-5555');
});
您必须包含命名空间:
use Tests\DuskTestCase;
use Laravel\Dusk\Chrome;
您指的是 Laravel 5.3 中可用的测试方法吗?这些在 5.4 中被删除并作为单独的包提供; https://github.com/laravel/browser-kit-testing
要安装它们,请使用 composer:
composer require laravel/browser-kit-testing --dev
如果其他人遇到过此错误并且问题的代码看起来很熟悉,这来自 Test-Driven Laravel course from Adam Wathan(强烈推荐!)。
如果您正在学习本课程的早期课程但正在使用 Laravel 5.5,则需要更新一些内容:
- 而不是
$this->get('...');
,使用$response = $this->get('...');
。 - 而不是
$this->see()
,使用$response->assertSee()
。
Laravel 已将 HTTP 测试层和辅助方法从 5.3(截屏视频中使用的 Laravel 版本)更新到 5.5。您的 5.5 功能规范应更新为以下内容:
<?php
class ViewConcertListingTest extends TestCase
{
use DatabaseMigrations;
/** @test */
public function user_can_view_a_concert_listing()
{
// Arrange
// Create a concert
$concert = Concert::create([
'title' => 'The Red Chord',
// ...
]);
// Act
// View the concert listing
$response = $this->get('/concerts/' . $concert->id);
// Assert
// See the concert details
$response->assertSee('The Red Chord');
// ...
}
}