Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Phpunit 在布局中使用自定义视图辅助对象时,单元测试失败_Phpunit_Zend Framework2 - Fatal编程技术网

Phpunit 在布局中使用自定义视图辅助对象时,单元测试失败

Phpunit 在布局中使用自定义视图辅助对象时,单元测试失败,phpunit,zend-framework2,Phpunit,Zend Framework2,因此,我创建了自定义视图帮助器,并在layout.phtml中使用它,如下所示: <?php echo $this->applicationBar(); ?> 当我在布局文件中注释掉视图辅助对象时,测试再次通过。我也有同样的问题,我用一种不好的方式解决了它(但它解决了我的特定问题) phpunit测试并没有找到我的工厂视图助手,而是找到我的可调用项。然后,我做了以下工作: public function getViewHelperConfig() { return a

因此,我创建了自定义视图帮助器,并在layout.phtml中使用它,如下所示:

<?php echo $this->applicationBar(); ?>

当我在布局文件中注释掉视图辅助对象时,测试再次通过。

我也有同样的问题,我用一种不好的方式解决了它(但它解决了我的特定问题)

phpunit测试并没有找到我的工厂视图助手,而是找到我的可调用项。然后,我做了以下工作:

public function getViewHelperConfig() {
    return array(
        'factories' => array(
            'aplicationBar' => function($service) {
                $applicationBar = new ApplicationBar();
                return $applicationBar;
            },
        ),
        'invokables' => array(
            'applicationBar' => 'Application\View\Helper\ApplicationBar',
        ),
    );
当我使用浏览器时,它使用正确的工厂。当我使用phpunit时,它使用invokables

当我需要设置一些参数时,问题就出现了。然后,我设置了一些默认参数,这些参数将仅由phpunit使用

namespace Application\View\Helper;

use Zend\View\Helper\AbstractHelper;

class ApplicationBar extends AbstractHelper {

    protected $parameter;

    public function __construct($parameter = 'something') {
        $this->parameter = $parameter;
    }

    public function __invoke() {
        return $this->parameter;
    }

}

这不是最好的解决方案,但如果我用更好的方法解决它,我会在这里发布。

我有同样的问题,我用不好的方法解决了它(但它解决了我的具体问题)

phpunit测试并没有找到我的工厂视图助手,而是找到我的可调用项。然后,我做了以下工作:

public function getViewHelperConfig() {
    return array(
        'factories' => array(
            'aplicationBar' => function($service) {
                $applicationBar = new ApplicationBar();
                return $applicationBar;
            },
        ),
        'invokables' => array(
            'applicationBar' => 'Application\View\Helper\ApplicationBar',
        ),
    );
当我使用浏览器时,它使用正确的工厂。当我使用phpunit时,它使用invokables

当我需要设置一些参数时,问题就出现了。然后,我设置了一些默认参数,这些参数将仅由phpunit使用

namespace Application\View\Helper;

use Zend\View\Helper\AbstractHelper;

class ApplicationBar extends AbstractHelper {

    protected $parameter;

    public function __construct($parameter = 'something') {
        $this->parameter = $parameter;
    }

    public function __invoke() {
        return $this->parameter;
    }

}

这不是最好的解决方案,但如果我能用更好的方法解决,我会在这里发布。

Nice。你能把它寄出去吗?我真的不喜欢我的解决方案,我来这里是为了一个更好的。很好。你能把它寄出去吗?我真的不喜欢我的解决方案,我来这里是为了一个更好的解决方案。