【问题标题】:Include problems when unit testing在单元测试时包括问题
【发布时间】:2019-10-23 02:51:48
【问题描述】:

当我对类进行单元测试时,我需要更改包含路径,但它自己的网站将无法工作。因此,每次我测试时,我都需要更改文件中几乎所有的包含路径,并在测试后再次更改它们。这显然是不切实际的。

我大致了解为什么会发生这种情况;因为测试文件不在根目录下。

问题:如何在不更改包含路径的情况下将单元测试文件与正在测试的文件保存在同一文件夹中?

我尝试定义一个 PATH 常量。这也不起作用,因为定义常量的文件每次包含它时都会重新定义它,使其无用。

require_once 'database/CrudTest.php';
require_once 'UserModel.php';
require_once 'database/UserCrud.php';
use PHPUnit\Framework\TestCase;

class UserModelTest extends TestCase{
....

要测试类,我必须在测试所需的每个文件中的每个包含之前放置“../”。然后在测试后将它们删除。

【问题讨论】:

    标签: php phpunit phpstorm


    【解决方案1】:

    不要依赖包含路径或相对路径来满足这些要求。您可以使用__DIR__ 获取测试文件所在目录的绝对路径,然后将路径的其余部分设置为所需文件的相对路径。

    require_once __DIR__ . '/database/CrudTest.php';
    

    我不能 100% 确定这条路径是正确的,因为我不确定我是否正确理解了这些文件相对于测试文件的位置。您可能需要使用

    require_once __DIR__ . '/../database/CrudTest.php';
    

    但无论如何,总体思路是相同的。这样,无论调用脚本的相对位置或当前工作目录如何,路径都是正确的。

    【讨论】:

    • 抱歉反应迟了,我在星期五的最后一个小时问了这个问题,实际上忘记了这个问题。无论如何解决方案都有效,感谢!
    • 没关系!不客气。反正也不算太晚。我让人们接受了两年后的答案哈哈
    猜你喜欢
    • 1970-01-01
    • 2012-12-01
    • 2021-10-09
    • 2015-12-11
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    相关资源
    最近更新 更多