在 zend 框架中运行控制器单元测试时出现“没有为此应用程序定义默认模块”异常

2024-03-22

我有一个具有默认目录结构的应用程序,对于没有自定义模块的应用程序(请参阅最后的结构图)。

我按照许多教程中的说明编写了一个 ControllerTestCase.php 文件,并且还创建了相应的引导文件(再次参见最后的图)。

我已经编写了一些运行良好的模型测试,但是当我开始编写索引控制器测试文件时,其中只有一个测试,只有一行(“$this->dispatch('/');”) ),运行 phpunit 时出现以下异常(但使用浏览器导航到同一位置 - 一切都很好并且工作正常):

1) IndexControllerTest::test_indexAction_noParams
Zend_Controller_Exception: No default module defined for this application

为什么是这样 ?我做错了什么?

附录:
目录结构:

-proj/
  -application/
    -controllers/
      -IndexController.php
      -ErrorController.php
    -config/
    -layouts/
    -models/
    -views/
      -helpers/
      -scripts/
        -error/
          -error.phtml
        -index/
          -index.phtml
    -Bootstrap.php
  -library/
  -tests/
    -application/
      -controllers/
        -IndexControllerTest.php
      -models/
      -bootstrap.php
      -ControllerTestCase.php
    -library/
    -phpunit.xml
  -public/
    -index.php

(基本上我在 models 目录中有更多文件,但这与这个问题无关。)

application.ini 文件:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "My"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.view[] = 
phpSettings.date.timezone = "America/Los_Angeles"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

测试/应用程序/bootstrap.php 文件:

<?php 
error_reporting(E_ALL);
// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'), // this project' library
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

require_once 'ControllerTestCase.php';

ControllerTestCase.php 文件:

<?php
require_once ('Zend/Test/PHPUnit/ControllerTestCase.php');
class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase {
    /**
     * 
     * @var Zend_Application
     */
    protected $application;

    protected function setUp(){
        $this->bootstrap = array($this, 'appBootstrap');
        parent::setUp();
    }

    public function appBootstrap(){
        $this->application = new Zend_Application(APPLICATION_ENV,
                                                  APPLICATION_PATH . '/configs/application.ini');

    }
}

这是一个已知的错误。
这是我解决此问题的解决方法:

<?php
require_once 'Zend/Application.php';
require_once 'Zend/Test/PHPUnit/ControllerTestCase.php';

abstract class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
    protected $_application;

    protected function setUp()
    {
        $this->bootstrap = array($this, 'appBootstrap');
        parent::setUp();
    }

    public function appBootstrap()
    {
        $this->_application = new Zend_Application(APPLICATION_ENV,
              APPLICATION_PATH . '/configs/application.ini'
        );
        $this->_application->bootstrap();

        /**
         * Fix for ZF-8193
         * http://framework.zend.com/issues/browse/ZF-8193
         * Zend_Controller_Action->getInvokeArg('bootstrap') doesn't work
         * under the unit testing environment.
         */
        $front = Zend_Controller_Front::getInstance();
        if($front->getParam('bootstrap') === null) {
            $front->setParam('bootstrap', $this->_application->getBootstrap());
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 zend 框架中运行控制器单元测试时出现“没有为此应用程序定义默认模块”异常 的相关文章

  • PHP:如何检查 Guzzle 4 中的超时异常?

    如果请求期间发生错误 Guzzle 会引发异常 不幸的是 似乎没有特定于超时的错误 这对我来说很重要 因为我知道这些错误偶尔会发生 我想重试相应的请求 并且需要能够判断错误是否是由于超时而发生的 来自docs http docs guzzl
  • 如何确定异常是否属于特定类型

    我有一段 try catch 代码 try catch Exception ex ModelState AddModelError duplicateInvoiceNumberOrganisation The combination of
  • 如何在 Symfony 4 中为测试环境设置数据库

    我对如何在 symfony 4 中为测试环境设置数据库感到困惑 我曾经在配置测试 ymlsymfony 3 及以下版本中的文件 最佳做法是什么 我应该重新创建一个学说 yaml文件输入配置 包 测试 该文档提到如何通过编辑 phpunit
  • PHPunit - 错误

    当 PHPunit 框架不希望发生的错误发生时 测试会停止 PHP 会抛出错误 但 PHPunit 不会记录这是一个错误 我如何确保 PHPunit 将其记录为错误 免责声明 我是 PHPUnit 的新手 我也试图弄清楚 发生错误时会发生什
  • 运行PHPUnit测试时如何避免内部调用函数?以及如何设置内部性能的模拟数据?

    我有一个类 Receipt php
  • java异常处理策略[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 捕获 foreach 条件中抛出的异常

    我有一个foreach在 foreach 本身的条件下循环期间中断的循环 有没有办法try catch抛出异常然后继续循环的项 这将运行几次 直到异常发生然后结束 try foreach b in bees exception is in
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • 捕获特定的 WebException (550)

    假设我创建并执行一个System Net FtpWebRequest 我可以用catch WebException ex 捕获此请求引发的任何与 Web 相关的异常 但是 如果我有一些逻辑只想在由于以下原因引发异常时执行 550 file
  • NoSuchBeanDefinitionException:没有合格的 bean 类型

    当调用我的 GET 请求 模式计算 时 我收到此错误 我不明白为什么 我的依赖项注入是正确的 org springframework beans factory NoSuchBeanDefinitionException No qualif
  • 使用 PHPUnit 测试抽象类的方法

    我有一个抽象类 其中包含我希望测试的通用方法 因此我不必在扩展该类的每个类中继续测试它们 abstract class Class1 implements iClass1 const VALUE A private Return publi
  • 如何手动发送django异常日志?

    我的应用程序中有一个应该返回的特定视图HttpResponse 如果一切都成功完成并且类似HttpResponseBadRequest 否则 此视图适用于外部数据 因此可能会引发一些意外的异常 我当然需要知道发生了什么 所以我有这样的东西
  • Java套接字:在连接被拒绝异常时重试的最佳方法?

    现在我正在这样做 while true try SocketAddress sockaddr new InetSocketAddress ivDestIP ivDestPort downloadSock new Socket downloa
  • 如何在 Zend MVC 中实现 SSL

    我之前已经通过使用特定的安全文件夹 例如服务器上的 https 文件夹与 http 文件夹 实现了安全页面 我已经开始使用 Zend Framework 并希望应用程序的某些部分 例如登录 使用 https 我在谷歌上搜索过 甚至在这里搜索
  • Zend 如何使用 mod_rewrite 解析前端控制器中的 URL?

    我不明白 Zend Framework 如何控制路由 我实际上正在尝试创建自己的控制器 路由类 编写了与 Zend 建议的 htaccess 相同的代码 以重写位于网站根目录的index php RewriteEngine On Rewri
  • 将变量发送到 Zend Framework 中的布局

    在我的项目中 我有许多动态元素 它们在每个页面上都是一致的 我已将这些放入我的layout phtml中 我的问题是 如何从控制器将变量发送到布局中 如果我想从我的控制器发送东西 我可以使用 this gt view gt whatever
  • 如何记录所有抛出的异常?

    如何记录抛出和捕获的任何异常 就像 Visual Studio 的 IntelliTrace 所做的那样 或者有没有办法将 InteliTrace 集成到应用程序的调试版本中 然后查看其日志 Update 我会稍微澄清一下 我想要标准 tx
  • Zend RegEx Validator 的自定义有意义的错误消息

    我正在验证表单中的文本字段 如下所示 name new Zend Form Element Text name name gt setLabel First Name gt setRequired true gt addFilter new
  • 如何在 NLog 中记录网络目标的异常

    我正在使用NLog http nlog project org日志框架 并尝试获取任何 UDP 记录器应用程序中显示的异常和堆栈跟踪信息 例如Sentinel http sentinel codeplex com and Log2控制台 h
  • Zend Framework - 需要从视图访问 GET 参数

    我正在使用 Zend 框架 我需要的是在我的视图中构造一个 url 通常 在常规 php 代码中 我只需使用全局 GET 获取 GET 变量 然而 对于 Zend 我将其设置为清理 URI 如下所示 ac 列表 过滤器 作品 页面 2 好像

随机推荐

  • 是否可以解构 ValueTuple 参数?

    是否可以解构一个不是从方法返回但作为输出参数的元组 我不确定我是否正确表达了自己的意思 甚至不确定是否使用了正确的术语 所以这里有一些例子 void OutMethod out int aNumber string someText out
  • 有没有办法让 gcc 输出原始二进制文件?

    是否有一组命令行选项可以说服 gcc 从独立的源文件生成平面二进制文件 例如 假设 foo c 的内容是 static int f int x int y x x return y 2 没有外部引用 没有任何内容可以导出到链接器 我想要一个
  • 使用多源 PUT 和 DELETE 请求时如何解决 ASP.NET Web API CORS 预检问题?

    我有一个 ASP NET Web API 由三个不同的 SPA 调用 我正在为 Web API 使用 Windows 身份验证 我最初尝试在 Web config 中配置 CORS 如下所示
  • 如何找出 rubocop 正在使用哪个配置文件?

    我很清楚 rubocop 遵循的规则来查找它用来构建它使用的警察列表的配置文件或文件 解释如下 RuboCop 配置 https docs rubocop org rubocop configuration html 然而 这些规则允许几种
  • Spring Roo 的 Maven 存储库

    我的目的是使用我的本地 Nexus 安装代理 Roo Maven 存储库 以便它将包含 Roo 1 2 0 RELEASE 包 On http static springsource org spring roo reference htm
  • 如何使用 CruiseControl.NET 和 MSBuild 部署/发布 Web 应用程序?

    如何使用 CruiseControl NET 和 MSBuild 部署 发布 Web 应用程序 我是 CCNET 新手 我能够从 SVN 获取最新源代码并使用 MSBuild 3 5 进行构建 如何将网站发布到另一台 开发 服务器 感谢您的
  • Google 地图 API 与地理编码器的问题

    我认为我只是做了一些愚蠢的事情 因为我的 JavaScript 技能不是最好的 以下代码生成一个空白的灰色地图 function initialize directionsDisplay new google maps Directions
  • Swift OneSignal OSPermissionSubscriptionState setSubscription

    我已经更新了我的 cocoapods 但 OneSignal 出现错误 ERROR S 类型 OneSignal 没有成员 setSubscription OneSignal setSubscription true 在范围内找不到类型 O
  • 在 cv2 Python 中克隆图像

    我是 OpenCV 新手 作用相同的Python函数是什么简历 克隆 in C 我只是想通过 rectImg img 10 20 10 20 但是当我在上面画一条线时 我发现这条线同时出现在img和 rectImage 那么 我怎样才能完成
  • 如何访问 Blazor WebAssembly 中的应用程序设置

    我当前正在尝试将 api url 保存在应用程序设置中 但是 configuration Properties似乎是空的 我不确定如何获取该设置 在程序 cs中 public static async Task Main string ar
  • 忽略 webview 中的 ssl 证书请求

    我制作了一个小应用程序 其中涉及aspx 页面 https noor moe gov sa 我尝试打开它并抛出我的网络视图 但我得到了空白屏幕 我尝试用 Chrome 浏览器打开它 它给了我所需的证书 我的代码非常简单我添加了一些文档来解释
  • n 维向量

    假设我想声明一个向量的向量的向量的向量 最多 n 维 Like so using namespace std for n 2 vector
  • 为什么 Verilog 不被视为编程语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 教授在课堂上说学生不应该说他们学会了用Verilog 编程 他说 Verilog 之类的东西不是用来编程的 而是用来设计的 那么 Verilog
  • 摆脱“使用临时;使用文件排序”

    当我对我的查询进行解释时 我看到第一行的 额外 下有 使用临时 使用文件排序 我知道这很糟糕 但我不知道它到底意味着什么或如何解决它 如果您想查看我的查询 这是我针对同一查询提出的更普遍的问题 MySQL 查询优化和菜鸟解释 https s
  • 从 Ext.data.Store 访问 http 状态代码

    我有一个 http API 令人震惊的新技术 它对设置不同响应状态的不同错误做出反应 问题是 当使用 Ext data Store 和一些 XMLHttpRequest inside 代理时 处理这种状态的最佳方法是什么 据我所知 加载 事
  • 我可以根据时间更改背景颜色吗?

    我使用 html5 CSS bootstrap 创建了一个漂亮的网站 我想知道是否可以在白天 蓝色 和夜间 暗红色 期间在代码中自动更改背景颜色和导航栏选择颜色 我可以做些什么来根据用户的时间更改导航栏和背景的颜色吗 这是我的代码
  • C++:在小型项目的头文件中编写整个类的缺点?

    只是一个风格问题 我是一名独立工作的独立游戏开发者 我养成了在标题中编写整个类的 坏 习惯 我知道 h cpp 文件组合的一些好处是它们允许将代码分割成编译块 只要它们保持不变就不需要重新编译 并允许将接口与实现分开 然而 这些事情对我来说
  • Django-MPTT子页面的完整路径如何制作?

    我开始使用 Django MPTT 应用程序在我的 Django 站点页面上获取基于树的方法 对于前 我有带有子页面的页面 Trance 声音恍惚 子页 Hard Trance 子页面 Breaks Atmo Breaks 子页面 渐进式休
  • 创建独立于 bash 的进程

    我编写了一个程序来计算笔记本电脑中可用的电池电量 我还在程序中定义了一个阈值 每当电池电量低于阈值时 我想调用另一个进程 我使用了 system invoke o 其中 invoke o 是我必须运行的程序 我正在运行一个脚本 该脚本每 5
  • 在 zend 框架中运行控制器单元测试时出现“没有为此应用程序定义默认模块”异常

    我有一个具有默认目录结构的应用程序 对于没有自定义模块的应用程序 请参阅最后的结构图 我按照许多教程中的说明编写了一个 ControllerTestCase php 文件 并且还创建了相应的引导文件 再次参见最后的图 我已经编写了一些运行良