dingllingham / nova-assertions
Nova API 测试请求与断言
1.2.0
2020-11-24 01:14 UTC
This package is auto-updated.
Last update: 2024-09-07 07:32:22 UTC
README
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();
作者
嗨 👋,我是 Brian Dillingham,这是 Nova 包的创建者 以及其他一些包
希望您觉得它有用。请随时提供反馈。
在推特上关注我: @im_brian_d