繁体   English   中英

Laravel phpunit 测试需要访问 API 服务进行用户验证

[英]Laravel phpunit testing needs access to API Service for user validation

我正在开发一个 Laravel 项目,该项目正在访问 API 以进行所有后端数据存储。 这包括用户身份验证。

我有一个 API 服务以及一个 API 服务提供者,它证实了该服务,然后将该服务提供给具有请求变量的所有页面。

我认为在测试 Class 中证实 API 服务更容易,所以这就是我正在做的,但我遇到了会话问题。

这是我到目前为止所拥有的:

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
use App\Services\ApiService;

class LoginTest extends TestCase
{
    private $apiService;

    public function __construct(){
        $this->withSession(['user' => '', 'auth_token' => '']);
        $url = env('API_URL');
        $this->$apiService = new ApiService($url);
    }

我收到此错误:在 null 上调用成员 function isStarted()。

有没有更好的方法来调用依赖 session 变量进行测试的 API 服务?

我们最终如何做到这一点:

我们将构造函数更改为 parent::SetUp 以调用 API 服务

public function setUp(): void
    {
        parent::setUp();
        
        $url = env('API_URL');
        $this->ApiService = new ApiService($url);
    }

然后在测试/测试案例中,我们调用了登录后路由,传递了硬编码的测试用户名和密码信息。

public function login()
    {
        $this->post("/login", ['email' => 'admin@big-api.test', 'password' => 'ThisUserWillBeDeleted']);
    }

现在我只需在我需要通过 API 登录才能访问页面的每个测试用例中调用登录 function。

这最终比我想象的要简单得多,但到达那里需要一些时间。 希望这对其他人有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM