热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Laravel5单元测试中未发现特征-TraitnotfoundinsideLaravel5unittests

ImwritingsomeunitteststotesttheAPIendpointsinmyLaravel5application,andalotofendp

I'm writing some unit tests to test the API endpoints in my Laravel 5 application, and a lot of endpoints require user authentication. Instead of having the same user account creation code in every test, I wanted to define a RegistersUsers trait to use on the test classes, which will have a registerUser() method.

我正在编写一些单元测试来测试Laravel 5应用程序中的API端点,并且许多端点需要用户身份验证。我没有在每个测试中使用相同的用户帐户创建代码,而是想要在测试类上定义一个RegistersUsers特性,它将具有registerUser()方法。

The directory structure of my tests directory is like so:

我的tests目录的目录结构如下:

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

I've namespaced TestCase.php and UserTest.php by adding this namespace declaration:

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

namespace MyappTests;

and I've namespaced RegistersUsers.php like so:

我像这样命名为RegistersUsers.php:

namespace MyappTests\Traits;

My UserTest looks like this, with the namespace and the use declaration so that I can leverage RegistersUsers.

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

However, when I run the test, PHPUnit dies with the fatal error:

但是,当我运行测试时,PHPUnit死于致命错误:

Trait 'MyappTests\Traits\RegistersUsers' not found in /home/vagrant/demo-app-net/tests/UserTest.php on line 9

在第9行/home/vagrant/demo-app-net/tests/UserTest.php中找不到Trait'MyappTests \ Traits \ RegistersUsers'

As far as I can tell, my namespacing is correct and my trait should be found. I've been going around in circles with this and can't seem to figure it out.

据我所知,我的命名空间是正确的,应该找到我的特点。我一直在四处走动,似乎无法弄明白。

1 个解决方案

#1


18  

I'm guessing having the trait in the traits folder, the trait is no longer accounted for in your autoloader.

我猜测在traits文件夹中有这个特性,你的自动加载器中不再考虑这个特性。

In order to correct this, you should open up composer.json, find the sectionfor autoload-dev and change it to something like the following...

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

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

And that should add any traits you have in that folder to the autloader.

这应该将您在该文件夹中的任何特征添加到自动加载器。

Edit

Some additional ideas were brought up in the comments. If you are going to be maintaining proper folder/namespace structure, it would be a good idea to use psr-4 autoloading rather than maintaining the class map.

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

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

Also, rather than put logic in a trait to register a user for use with testing, when you extend TestCase, it brings in a helper method for logging in as a certain user. You'd use it like so...

此外,在扩展TestCase时,不是将逻辑放在特征中来注册用户以进行测试,而是引入一个帮助方法以特定用户身份登录。你会这样使用它......

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

推荐阅读
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • 本文介绍了如何在 C# 和 XNA 框架中实现一个自定义的 3x3 矩阵类(MMatrix33),旨在深入理解矩阵运算及其应用场景。该类参考了 AS3 Starling 和其他相关资源,以确保算法的准确性和高效性。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • 本文深入探讨了 Delphi 中类对象成员的核心概念,包括 System 单元的基础知识、TObject 类的定义及其方法、TClass 的作用以及对象的消息处理机制。文章不仅解释了这些概念的基本原理,还提供了丰富的补充和专业解答,帮助读者全面理解 Delphi 的面向对象编程。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ... [详细]
  • 本文将详细介绍多个流行的 Android 视频处理开源框架,包括 ijkplayer、FFmpeg、Vitamio、ExoPlayer 等。每个框架都有其独特的优势和应用场景,帮助开发者更高效地进行视频处理和播放。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 本文探讨了如何在 Pug 模板中正确地使用 JSON 插值,并解决了相关文档不足的问题。我们将介绍通过 gulp-pug 处理 JSON 数据的具体方法,以及如何在模板中插入和显示这些数据。 ... [详细]
  • InmyapplicationIhaveQGraphicsScenewithpixmapaddedandallisviewedinQGraphicsViewwithsc ... [详细]
  • PostgreSQL 最新动态 —— 2022年4月6日
    了解 PostgreSQL 社区的最新进展和技术分享 ... [详细]
  • 本文详细介绍了装饰者(Decorator)模式,这是一种动态地为对象添加职责的方法。与传统的继承方式不同,装饰者模式通过组合而非继承来实现功能扩展,从而提供更大的灵活性和可维护性。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • HDU 2871 内存管理问题(线段树优化)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2871。本题涉及内存管理操作,包括重置、申请、释放和查询内存块。通过使用线段树进行高效管理和维护。 ... [详细]
author-avatar
旧瑾LA_364
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有