【问题标题】:PhalconPHP and phpunitPhalconPHP 和 phpunit
【发布时间】:2017-07-09 01:42:13
【问题描述】:

我一直在关注docs 用 phalcon 设置 phpunit。我的示例正在运行。

但是,我现在想实际使用它并测试我自己的类,为此我知道我需要在加载器中注册目录,但不是重复配置中已经定义的目录,我'我想将配置包含在 php 单元测试帮助程序类中(来自“phalcon 项目”命令)。这听起来很简单,但绝非如此。

是否必须添加其他代码才能访问 $config?

我是否正确地假设文档缺少有关测试您自己的类的大量代码,或者,在遵循文档之后它是否应该直接开箱即用?

【问题讨论】:

    标签: php phpunit phalcon


    【解决方案1】:

    我已经尝试自己实现这个,基本思想如下,实现示例标题:https://github.com/SavvySoftWorksLLC/phalcon_3_2_devtools_sample_project/tree/pks/setup_phpunit

    如果你像这样外部化你的加载器

    <?php
    
    $loader = new \Phalcon\Loader();
    
    /**
     * We're a registering a set of directories taken from the configuration file
     */
    $loader->registerDirs(
        [
            $config->application->controllersDir,
            $config->application->modelsDir
        ]
    )->register();
    

    然后像这样在你的入口点调用它:

    include ROOT_PATH . "/../app/config/loader.php";
    

    如果您像文档中提到的那样初始化一个新的 DI 容器,您将能够在您的测试助手中重用相同的加载器。

    为了展示全局,我推出了一个由 devtools 创建的开箱即用的应用程序供您查看。

    加载器:https://github.com/SavvySoftWorksLLC/phalcon_3_2_devtools_sample_project/blob/master/app/config/loader.php

    入口点: https://github.com/SavvySoftWorksLLC/phalcon_3_2_devtools_sample_project/tree/master/public

    【讨论】:

    • include ROOT_PATH . "/../app/config/loader.php"; 是我尝试的第一件事,当尝试访问配置值时,这会导致PHP Notice: Undefined variable: config in /var/www/api/app/config/loader.php on line 10。如果我将 ROOT_PATH . '/../app/models' 添加到 TestHelper 中定义的 $loader->registerDirs 我最终会出现错误 Phalcon\Di\Exception: Service 'modelsManager' wasn't found in the dependency injection container
    • 我必须对文档示例做出的不同之处之一是 DI 工厂创建的顺序。在这一点上,我能够在这里整理出来github.com/SavvySoftWorksLLC/…
    • 我再次查看并设法启动并运行它,但现在我收到modelsManager wasn't found in the dependency injection container¬
    • 并回答我自己的评论,孵化器包含一个处理模型管理器的 ModelTestCase 抽象类,请确保将您的模型目录包含在 registerDirs 中
    猜你喜欢
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    相关资源
    最近更新 更多