codicastudio / tests-admin
一个随机的 Codica Studio 包。
1.0.0
2020-09-25 01:54 UTC
This package is auto-updated.
Last update: 2024-09-25 13:46:47 UTC
README
Nova 测试的 Nova 请求和断言 - 查看示例
断言: 策略 | 卡片 | 操作 | 过滤器 | 透镜 | 资源 | 字段 | 关系
安装
composer require dillingham/nova-assertions --dev
通过将 NovaAssertions
添加到测试中启用
use NovaTesting\NovaAssertions; class UserTest extends TestCase { use NovaAssertions; }
身份验证
登录一个有权限访问 Nova 的用户的用户
$this->be(factory(User::class)->create());
Nova 请求
使用资源的 uriKey 进行断言的请求
$response = $this->novaIndex('users'); $response = $this->novaDetail('users', $user->id); $response = $this->novaCreate('users'); $response = $this->novaEdit('users', $user->id); $response = $this->novaLens('users', Lens::class);
请求过滤器
您也可以将过滤器及其值传递给索引和透镜
$response = $this->novaIndex('users', [ StatusFilter::class => 'active' ]);
$response = $this->novaLens('users', Lens::class, [ StatusFilter::class => 'active' ]);
断言 HTTP
您可以像往常一样调用 HTTP 响应方法
$response->assertOk();
断言资源
$response->assertResourceCount(3);
$response->assertResources(function($resources) { return $resources->count() > 0; });
断言卡片
$response->assertCardCount(5);
$response->assertCardsInclude(Card::class);
$response->assertCardsExclude(Card::class);
$response->assertCards(function($cards) { return $cards->count() > 0; });
断言操作
$response->assertActionCount(5);
$response->assertActionsInclude(Action::class);
$response->assertActionsExclude(Action::class);
$response->assertActions(function($actions) { return $actions->count() > 0; });
断言过滤器
$response->assertFilterCount(5);
$response->assertFiltersInclude(Filter::class);
$response->assertFiltersExclude(Filter::class);
$response->assertFilters(function($filters) { return $filters->count() > 0; });
断言透镜
$response->assertLensCount(5);
$response->assertLensesInclude(Lens::class);
$response->assertLensesExclude(Lens::class);
$response->assertLenses(function($lenses) { return $lenses->count() > 0; });
断言字段
$response->assertFieldCount(5);
断言特定字段存在
$response->assertFieldsInclude('id');
断言特定字段包含一个值
$response->assertFieldsInclude('id', $user->id);
断言多个字段存在
$response->assertFieldsInclude(['id', 'email']);
断言具有特定值的多个字段存在
$response->assertFieldsInclude(['id' => 1, 'email' => 'example']);
断言一个字段存在多个值
$response->assertFieldsInclude('id', $users->pluck('id'));
对一系列字段进行断言
$response->assertFields(function($fields) { return $fields->count() > 0; });
在这些场景中,也可以使用 exclude
$response->assertFieldsExclude(['id' => 1, 'email' => 'example']);
断言关系
// App\Nova\Post // BelongsTo::make('Category'),
$response = $this->novaCreate('posts'); $response->assertRelation('categories', function($categories) { // });
// App\Nova\Category // HasMany::make('Posts'),
$response = $this->novaDetail('categories'); $response->assertRelation('posts', function($posts) { // });
断言策略
断言 Nova 的策略使用 和已认证用户
$response->assertCanView(); $response->assertCanCreate(); $response->assertCanUpdate(); $response->assertCanDelete(); $response->assertCanForceDelete(); $response->assertCanRestore();
还可以对每个断言使用 cannot
$response->assertCannotView();