【问题标题】:undefined helper function in laravel phpunit testcaselaravel phpunit 测试用例中未定义的辅助函数
【发布时间】:2016-04-24 02:39:30
【问题描述】:

我有一个帮助文件helper.php,我在其中保存了一些帮助函数。

//helper.php
function isAuthLiked($authLikedPosts, $post)
{
    return !! Auth::check() && $authLikedPosts->contains('id', $post->id);
}

现在在我的测试用例中,我写道:

    $this->assertTrue(isAuthLiked($authrenominations, $post[0]));

当我运行测试用例时,我得到了错误:

致命错误:调用未定义的函数 isAuthLiked() C:\wamp\www\Nom7\tests\integration\UserTest.php 在第 304 行

我在 compose.json 自动加载中添加了帮助文件。但问题仍然存在。

"autoload": {
    "classmap": [
        "database",
        "app/Http/Controllers",
        "app/Models"
    ],
    "files":[
        "app/helper.php"
    ],
    "psr-4": {
        "App\\": "app/",
        "Acme\\": "app/Acme/"
    }
},
"autoload-dev": {
    "classmap": [
        "tests/TestCase.php"
    ],
    "files":[
        "app/helper.php"
    ]
},

【问题讨论】:

  • 你能发布你的 composer.json 吗?
  • @Schellingerht:已添加。
  • 可以在你的测试之外使用这个函数吗?
  • 是的,我可以在测试用例之外使用辅助函数,它工作正常。
  • 如果你像这样在测试用例中引用类,它会起作用吗:$this->assertTrue(Helper::isAuthLiked($authrenominations, $post[0])); 假设你有一个名为“Helper”的“helper.php”类的别名。或者,如果您这样引用该类:$this->assertTrue(\Path\To\File\helper::isAuthLiked($authrenominations, $post[0]));?

标签: laravel phpunit laravel-5.1


【解决方案1】:

检查您的路径。您在文件数组中使用 相对路径。您正在从您的测试目录运行您的测试,所以找不到 app/helper.php

【讨论】:

  • 我将命名空间更改为 App,然后我尝试了,仍然出现同样的错误。
  • 命名空间? files 数组必须包含没有命名空间的文件。
  • 我的意思是在 TestCase.php 类中。不在 compose.json 中
猜你喜欢
  • 1970-01-01
  • 2015-06-24
  • 2013-11-12
  • 1970-01-01
  • 2019-11-10
  • 1970-01-01
  • 2022-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多