测试Laravel Nova

时间:2018-10-01 12:12:28

标签: laravel laravel-nova

目前,我正在尝试为laravel nova编写功能测试,以断言该页面已正确加载并且可以看到数据。

但是,当我编写测试时,由于产生laravel nova数据的方式,我无法找到断言显示正确文本的方法。除此之外,我似乎无法测试页面是否正确加载,而当不存在的资源页面加载时,laravel nova的404页面作为200响应返回。

有没有人找到测试新星的好方法?

3 个答案:

答案 0 :(得分:0)

TL; DR:签出此仓库:https://github.com/bradenkeith/testing-nova。它帮助我找到了如何测试Laravel Nova的方法。

Laravel Nova基本上是一个CRUD框架。所以我假设,当您说

  

“该页面已正确加载,并且可以看到数据”

您实际上的意思是:我的资源已正确加载。或者,我可以创建/更新/删除资源。这是因为Nova正在通过api调用异步加载其资源信息。 因此,测试逻辑的一个好方法是测试/nova-api/路由

例如:

<?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
          ]
        ]
    ]);
  }
}

通过调用路由https://my-app.test/resources/notes/1,我们可以断言我们得到200响应(成功),并且实际上是在返回新创建的Note。这是一个非常值得信赖的测试,可以确保资源详细信息页面正常运行。

但是,如果您谈论的是浏览器测试,则可能要看看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');
});

答案 1 :(得分:-3)

我遇到了同样的问题,我发现App \ Providers \ NovaServiceProvider.php中的门不允许用户通过,只是返回true,所有事情都必须按预期运行

Private Sub Application_Reminder(ByVal Item As Object)
    If TypeOf Item Is Outlook.TaskItem Then

        If Not Item.Subject = "US SANCTION REPORT RUN" Then
            Exit Sub
        End If

    End If

    GetTemp Item ' call sub
End Sub

Private Sub GetTemp(ByVal Item As TaskItem)
    Dim xlApp As Excel.Application
    Dim xlBook As Workbook

    Set xlApp = New Excel.Application
    Set xlBook = xlApp.Workbooks.Open("C:\Users\hha106\Desktop\RUN US SANCTION REPORT.xlsm") ' update with Excel name
    xlApp.Visible = True

    Set xlApp = Nothing
    Set xlBook = Nothing
End Sub

答案 2 :(得分:-5)

在您的项目目录中添加app / config文件:

App\Providers\NovaServiceProvider::class,