热门标签 | 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猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • JVM:33 如何查看JVM的Full GC日志
    1.示例代码packagecom.webcode;publicclassDemo4{publicstaticvoidmain(String[]args){byte[]arr ... [详细]
  • PriorityQueue源码分析
     publicbooleanhasNext(){returncursor<size||(forgetMeNot!null&am ... [详细]
  • 开发笔记:快速排序和堆排序
    本文由编程笔记#小编为大家整理,主要介绍了快速排序和堆排序相关的知识,希望对你有一定的参考价值。快速排序思想:在partition中,首先以最右边的值作为划分值x,分别维护小于 ... [详细]
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社区 版权所有