Jam*_*ods 8 laravel laravel-nova
目前我正在尝试为laravel nova编写功能测试,断言页面已正确加载并且可以看到数据.
然而,当我编写测试时,我无法找到一种方法来断言由于laravel nova的数据产生的方式显示正确的文本.其中我无法测试页面是否正确加载laravel nova的404页面作为200响应,当不存在的资源页面加载时.
有没有人找到一个特色测试新星的好方法?
tho*_*ckx 12
TL;DR:查看这个 repo:https : //github.com/bradenkeith/testing-nova。它帮助我找到了如何测试 Laravel Nova 的方法。
Laravel Nova 基本上是一个 CRUD 框架。所以我假设,当你说
“页面加载正确,数据可见”
您的意思是:我的资源已正确加载。或者,我可以创建/更新/删除资源。这是因为 Nova 正在通过 api 调用异步加载其资源信息。这就是为什么,测试逻辑的一个好方法是测试/nova-api/routes。
例如:
<?php
namespace Tests\Feature\Nova;
use App\Note;
use Tests\TestCase;
class NoteTest extends TestCase
{
public function setUp(): void
{
parent::setUp();
}
/** @test */
public function it_gets_a_note()
{
// given
$note = factory(Note::class)->create();
$response = $this->get('/nova-api/notes/' . $note->id)
->assertStatus(200)
->assertJson([
'resource' => [
'id' => [
'value' => $note->id
]
]
]);
}
}
Run Code Online (Sandbox Code Playgroud)
通过调用 route https://my-app.test/resources/notes/1,我们可以断言我们收到了 200 响应(成功)并且我们实际上正在返回我们新创建的 Note。这是一个非常值得信赖的测试,可确保资源详细信息页面正常工作。
但是,如果您正在谈论Browser Testing,您可能想看看Laravel Dusk:
Laravel Dusk 提供了一个富有表现力、易于使用的浏览器自动化和测试 API。
安装后,您可以开始真正的浏览器测试:
$user = factory(User::class)->create();
$user->assignRole('admin');
$this->browse(function (Browser $browser) use ($user) {
$browser
->loginAs($user)
->visit('/')
->assertSee('Dashboard');
});
Run Code Online (Sandbox Code Playgroud)