php - 测试 Laravel 护照

标签 php laravel testing laravel-passport

我有一个问题 - 我正在为我的 api 使用 Laravel Passport。我需要编写测试。每当我在测试中使用 WithoutMiddleware 特性时,它都会禁用我使用的 Implicit route model binding 特性。每当我不使用该特征时,我需要直接从我的测试中进行身份验证。为此,我需要通过 Passport 创建一个 API token 。

但是,需要在通过 artisan passport:install 进行测试之前安装 Passport,因为我的测试使用的是 DatabaseTransactionsDatabaseMigrations 特征。当我这样做时,测试会花费大量时间来运行,我觉得这不是正确的方法。有没有办法只禁用 auth 中间件?或者还有其他想法吗?

最佳答案

聚会有点晚了,但根据这个issue目前不支持此功能,也没有计划很快更改。

但是,所有 Laravel 测试类都继承了 withoutMiddleware 方法,您可以使用它来 disable middleware on specific methods .不确定这是否对您有帮助,但只是把它扔在那里:

public function testBasicExample()
{
    $this->withoutMiddleware();

    $this->visit('/')
         ->see('Laravel 5');
}

您还可以通过在 Application 实例上调用 runningUnitTests() 方法来检查测试是否在中间件本身内运行。

关于php - 测试 Laravel 护照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40207371/

相关文章:

php - 如何在 explode 和正则表达式之间进行选择

php - 如何在返回数据时禁用或删除 updated_At 和 Created_at

php - 如何在 Laravel 中创建 hasManyThrough 关系?

javascript - 这个语句是什么意思 "Cypress commands do not return their subjects, they yield them"?

PHP - 通过基于计数的循环创建多维数组

php - 如何将数组中的元素作为类添加

php - 使用 Codeigniter 事务插入到两个表

php - Laravel 将数组放入选择框

android - 应用内结算和许可证测试帐户

testing - 搜索浏览器兼容性工具