【问题标题】:InvalidArgumentException: "\string$filter" is not a valid Fqsen with $objectManager->get()InvalidArgumentException: "\string$filter" 不是 $objectManager->get() 的有效 Fqsen
【发布时间】:2020-04-01 09:34:40
【问题描述】:

使用 TYPO3 10.2 运行 TYPO3 爬虫的单元测试

TYPO3_PATH_WEB=$PWD/.Build/Web typo3DatabaseName=crawler typo3DatabaseHost=127.0.0.1 typo3DatabaseUsername=root typo3DatabasePassword=root .Build/bin/phpunit -c .Build/vendor/nimut/testing-framework/res/Configuration/FunctionalTests.xml Tests/Functional --filter canCreateQueueEntriesUsingConfigurationRecord

我收到以下错误,请参见下文。

如果我改变https://github.com/AOEpeople/crawler/blob/typo3v9/Classes/Api/CrawlerApi.php#L76GeneralUtility::makeInstance() 有效,但对$objectManager->get() 无效。

我知道这条线可以完全删除,只是想了解这里有什么问题。我没有找到任何逻辑。

要亲自尝试,您可以将 composer.json 中的 require-dev 部分调整为

    "require-dev": {
        "nimut/testing-framework": "^4.1 || dev-master",
        "nimut/typo3-complete": "^9.5 || ^10.2",
        "phpstan/phpstan": "^0.11.19",
        "rector/rector": "^0.6",
        "symplify/easy-coding-standard": "^7.0"
    },

错误

There was 1 error:

1) AOE\Crawler\Tests\Functional\Api\CrawlerApiTest::canCreateQueueEntriesUsingConfigurationRecord
InvalidArgumentException: "\string$filter" is not a valid Fqsen!.

/path/to/extension/crawler/.Build/vendor/phpdocumentor/reflection-common/src/Fqsen.php:48
/path/to/extension/crawler/.Build/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php:70
/path/to/extension/crawler/.Build/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php:32
/path/to/extension/crawler/.Build/vendor/phpdocumentor/type-resolver/src/TypeResolver.php:264
/path/to/extension/crawler/.Build/vendor/phpdocumentor/type-resolver/src/TypeResolver.php:118
/path/to/extension/crawler/.Build/Web/typo3/sysext/extbase/Classes/Reflection/ClassSchema.php:401
/path/to/extension/crawler/.Build/Web/typo3/sysext/extbase/Classes/Reflection/ClassSchema.php:185
/path/to/extension/crawler/.Build/Web/typo3/sysext/extbase/Classes/Reflection/ReflectionService.php:112
/path/to/extension/crawler/.Build/Web/typo3/sysext/extbase/Classes/Reflection/ReflectionService.php:99
/path/to/extension/crawler/.Build/Web/typo3/sysext/extbase/Classes/Object/Container/Container.php:158
/path/to/extension/crawler/.Build/Web/typo3/sysext/extbase/Classes/Object/Container/Container.php:110
/path/to/extension/crawler/.Build/Web/typo3/sysext/extbase/Classes/Object/ObjectManager.php:126
/path/to/extension/crawler/Classes/Api/CrawlerApi.php:76
/path/to/extension/crawler/.Build/Web/typo3/sysext/core/Classes/Utility/GeneralUtility.php:3461
/path/to/extension/crawler/.Build/Web/typo3/sysext/extbase/Classes/Object/Container/Container.php:193
/path/to/extension/crawler/.Build/Web/typo3/sysext/extbase/Classes/Object/Container/Container.php:166
/path/to/extension/crawler/.Build/Web/typo3/sysext/extbase/Classes/Object/Container/Container.php:110
/path/to/extension/crawler/.Build/Web/typo3/sysext/extbase/Classes/Object/ObjectManager.php:126
/path/to/extension/crawler/Tests/Functional/Api/CrawlerApiTest.php:116

【问题讨论】:

    标签: php exception phpunit typo3 typo3-10.x


    【解决方案1】:

    问题很可能出在CrawelerControllerObjectManager 分析应该创建的类和所有依赖的类。

    在这种情况下,文档块中存在格式错误: https://github.com/AOEpeople/crawler/blob/typo3v9/Classes/Controller/CrawlerController.php#L940

    /**
     * Return array of records from crawler queue for input page ID
     *
     * @param integer $id Page ID for which to look up log entries.
     * @param string$filter Filter: "all" => all entries, "pending" => all that is not yet run, "finished" => all complete ones
     * @param boolean $doFlush If TRUE, then entries selected at DELETED(!) instead of selected!
     * @param boolean $doFullFlush
     * @param integer $itemsPerPage Limit the amount of entries per page default is 10
     * @return array
     */
    public function getLogEntriesForPageId($id, $filter = '', $doFlush = false, $doFullFlush = false, $itemsPerPage = 10)
    

    string$filter 之间缺少空格

    【讨论】:

    • 就是这样。谢谢,甚至没有查看这个文件,从堆栈跟踪中没有发现任何迹象表明问题出在那个文件中。谢谢。
    • True... 使用 xdebug 并检查失败时使用了哪些参数会使事情变得更容易。然而,这个很容易被发现,因为它直接在应该构建的类中。
    • 我没有考虑研究该课程,因为我专注于使用的课程本身。但是感谢您的帮助,下次会记住它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 2022-01-04
    • 2014-05-25
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    相关资源
    最近更新 更多