gpt4 book ai didi

php - 在 Laravel 中测试而不通过身份验证

转载 作者:行者123 更新时间:2023-12-03 22:38:22 25 4
gpt4 key购买 nike

我正在尝试在 Laravel 5.1 中创建一个测试,但我想在没有授权表的情况下使用它。

在我的 RoleController 类中,我将其用于:

public function __construct()
{
$this->middleware('auth');
}

我试过使用 use WithoutMiddleWare;但没有用。这是 phpunit 输出:
A request to [http://localhost/nuevo/rol] failed. Received status code [500].

还尝试使用 $this->withoutMiddleware();对于每种测试方法,但这也不起作用。这是 phpunit 输出:
InvalidArgumentException: Nothing matched the filter [nombre] CSS query provided for [http://localhost/auth/login].

测试不是访问“nuevo/rol”路由,而是向“auth/login”发出请求,因为它使用 auth 表单工作。

有没有一种方法可以在不使用授权表的情况下进行测试,或者我需要在我的测试代码中放入使用它的逻辑?

最佳答案

要开始使用 Test-driven development (TDD) 中的 Laravel ,请转到安装根目录中的 测试 目录(默认提供对 PHPUnit 测试的支持,因此您无需担心将 675 设置为 6104)。

要创建您的测试,请运行以下 Artisan 命令:

php artisan make:test RoleTest

上面的 Artisan 命令将在您的测试目录中创建一个新的 RoleTest 类,其中包含以下测试用例(在您新创建的 tests/RoleTest.php 文件中):
class RoleTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testExample()
{
$this->assertTrue(true);
}
}

要在运行测试之前禁用中间件,请使用 use WithoutMiddleware; 如下,以便将其应用于 RoleTest 类下的所有方法:
class RoleTest extends TestCase
{
use WithoutMiddleware;

/**
* A basic test example.
*
* @return void
*/
public function testExample()
{
$this->assertTrue(true);
}
}

如果您想将中间件的豁免应用于选定的方法,请仅在以下方法中使用 $this->withoutMiddleware(); :
public function testExampleWithoutMiddleware()
{
$this->withoutMiddleware();

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

只需在命令行界面中运行 phpunit 即可运行测试。

在上面的最后一个片段中, testExampleWithoutMiddleware 方法禁用了中间件,在该方法中,我们对站点或应用程序根目录中的可用资源进行测试访问(基于您的安装目录和/或在 文件中的规定) ) 并检查它是否包含术语 routes.php

TL;DR

只需使用 Laravel 是您在禁用中间件的情况下运行 PHPUnit 测试的方法;不是 $this->withoutMiddleware(); 而是强制执行它。

关于php - 在 Laravel 中测试而不通过身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39624699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com