[英]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.