加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel 5单元测试中没有发现的特征

发布时间:2020-12-14 19:50:15 所属栏目:大数据 来源:网络整理
导读:我正在编写一些单元测试来测试我的Laravel 5应用程序中的API端点,并且许多端点需要用户身份验证.而不是在每次测试中都有相同的用户帐户创建代码,我想定义一个用于测试类的RegistersUsers trait,它将具有一个registerUser()方法. 我的测试目录的目录结构是这
我正在编写一些单元测试来测试我的Laravel 5应用程序中的API端点,并且许多端点需要用户身份验证.而不是在每次测试中都有相同的用户帐户创建代码,我想定义一个用于测试类的RegistersUsers trait,它将具有一个registerUser()方法.

我的测试目录的目录结构是这样的:

/tests
    /Traits
        RegistersUsers.php
    TestCase.php
    UserTest.php

我通过添加这个命名空间声明命名为TestCase.php和UserTest.php:

namespace MyappTests;

我已经命名为RegistersUsers.php,如下所示:

namespace MyappTestsTraits;

我的UserTest看起来像这样,使用命名空间和使用声明,以便我可以利用RegistersUsers.

<?php

namespace MyappTests;

use MyappTestsTraitsRegistersUsers;

class UserTest extends TestCase
{
    use RegistersUsers;

    // ... rest of the class

但是,当我运行测试,PHPUnit死亡与致命的错误:

Trait ‘MyappTestsTraitsRegistersUsers’ not found in /home/vagrant/demo-app-net/tests/UserTest.php on line 9

据我所知,我的命名空间是正确的,我的特质应该被找到.我已经和这个圈子在一起了,似乎没有弄清楚.

我猜想在traits文件夹中具有特质,你的自动加载机不再考虑特质.

为了纠正这个问题,你应该打开composer.json,找到autoload-dev的部分,并将其更改为如下所示的内容:

"autoload-dev": {
    "classmap": [
        "tests/TestCase.php","tests/Traits/"
    ]
},

这应该会将您在该文件夹中的任何特征添加到autloader.

编辑

评论中提出了一些其他想法.如果要保持正确的文件夹/命名空间结构,使用psr-4自动加载而不是维护类映射是个好主意.

"autoload-dev": {
    "psr-4": {
        "MyappTests": "tests/"
    }
},

而且,当扩展TestCase时,它不是将逻辑注册在用户注册用户进行测试中,而是引入一个帮助方法以作为某个用户登录.你会这样使用…

$user = User::find($id);
$this->be($user);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读