使用 Simpletest 对 CodeIgniter 进行单元测试 - 测试很少

2024-04-18

在我们的开发团队中,我们决定尝试一下单元测试。我们使用简单测试。然而,这是一条艰难的路。一周后,我只创建了 1 个单元测试来测试某个帮助文件。就是这样。其余的(控制器、模型、视图、库)还没有单元测试。我计划不测试其中的大多数。例如,视图对于测试来说太微不足道了,所以我放弃了对其进行测试。接下来是控制器。我计划我的控制器不做复杂的事情,这样它只在模型和视图之间传递信息。我会将那些更复杂的东西移至库或助手中。

现在回答我的问题:

1)我做错了吗?到目前为止,我没有发现任何可能出错的地方,因此需要进行单元测试。大多数东西(现在)只是 CRUD。
2)我们真的需要对控制器进行单元测试吗?由于控制器的工作只是对视图和模型之间传递的数据进行少量处理,因此我发现对其进行单元测试很少有主动性。
3)如果我使用WebTestCase来测试控制器,这仍然被认为是单元测试吗?或者它已经是集成测试了?
4)假设你让我测试我的控制器,我将如何测试它?据我所知,CI 通过index.php 遵循前端控制器模式,那么我将如何处理(模拟?)呢?


如果您仍然对 CodeIgniter 的另一个单元测试持开放态度,我建议您尝试Toast http://jensroland.com/projects/toast/。我发现它很容易使用,并且不会对我的开发过程造成太大干扰。

我只使用单元测试来测试我的库、助手和模型。我的控制器没有太多代码,只获取 post 和 uri 参数,使用 trim 或 intval 对其进行清理,将其传递给库或模型,然后将结果传递给视图。

视图几乎没有需要测试的代码,因为它将所有内容显示到浏览器。大多数情况下,它只需要 css 和 js 调试。

模型几乎总是需要测试,因为它处理数据。如果没有单元测试,我发现很难追踪一些错误,特别是在复杂的计算中。

库和助手执行重复性任务,因此需要进行单元测试以确保其中的逻辑正确执行工作。

我希望这有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Simpletest 对 CodeIgniter 进行单元测试 - 测试很少 的相关文章

  • 在 PHP 中获取日期和数字工作日

    我正在用 PHP 开发一个应用程序 我需要使用日期和工作日的数字表示 我尝试过以下方法 today date Y m d number date N strtotime today echo Today today weekday numb
  • 将数据从 jQuery 传递到 PHP 以进行 ajax post

    你好 我是一个使用 jQuery 和 Ajax 的新手 我正在尝试使用 Jquery POST 方法将数据提交到服务器 我传递的数据是一个字符串 现在我无法理解如何传递数据以及如何检索数据 我尝试搜索有关我的问题的文章 但没有找到 我相信我
  • 如何在不提交 FORM 的情况下获取 VALUE?

    我想在不提交表单的情况下从表单中获取价值 因为客户必须选择正确的房屋模型类型才能获得适合所选房屋模型的正确表单 无需提交 只需选择房屋模型 例如继续之后的其余形式 到目前为止我已经尝试过这个
  • Laravel Schema onDelete 设置为 null

    无法弄清楚如何在 Laravel 中的表上设置正确的 onDelete 约束 我正在使用 SqLite table gt gt onDelete cascade works table gt gt onDelete null set nul
  • Laravel 关注者/关注关系

    我正在尝试在 laravel 中制作一个简单的关注者 关注系统 没什么特别的 只需单击一个按钮即可关注或取消关注 并显示关注者或关注你的人 我的问题是我不知道如何建立模型之间的关系 这些是迁移 用户迁移 Schema create user
  • PHP/MySQL/jQuery 记录的悲观锁定

    我一直在考虑为我参与的应用程序开发一些简单的记录锁定 有一些用户实际上需要花费几个小时才能完成记录的编辑 当其他人想要更改记录时 这会导致问题 目前不涉及锁定 我不确定乐观锁定在我的情况下是否可靠 因为记录是通过 AJAX 请求保存的 我正
  • 使用 SimpleHTTPServer 进行单元测试

    我正在编写一个 Python 模块 它封装了某个 Web 服务 API 这一切都是 REST 因此实施起来相对简单 然而 在单元测试方面我发现了一个问题 由于我不运行我为其创建此模块的服务 我不想对它们进行锤击 但同时 我需要检索数据来运行
  • PHP 矩阵的逆矩阵

    I saw 这个问题 https stackoverflow com questions 211160 python inverse of a matrix 并弹出这个想法 PHP 有没有一种有效的方法来做到这一点 EDIT 最好有演示 你
  • curopt_binarytranfer 到底是什么意思?

    我不明白有什么区别 CURLOPT RETURNTRANSFER AND CURLOPT BINARYTRANSFER 我写了一个脚本来检查它
  • 在 CodeIgniter 中使用 ajax 时出现 403 禁止错误

    我正在显示我的名字textbox使用 ajax 自动完成 但我的 ajax URL 不起作用 每次都显示在网络选项卡中 403 禁止 我尝试过像这样的ajax URL url baseUrl index php Employee contr
  • 如何在课外使用$this?

    我们可以使用 this课外 请看下面的例子
  • 解释一下 $CI =& get_instance();

    查看codeigniter的源代码 在它的辅助函数中我不断看到代码 CI get instance 谁能向我解释一下这段代码是如何工作的 我知道它正在返回对 CI 超级对象的引用 但是在哪里get instance 来自 这基本上是一个单例
  • Wordpress Cron 错误“SSL 证书:无法获取本地颁发者证书”

    我在安装 WordPress 时遇到错误 wp cron php 无法由 WordPress 执行 调试工具 Crontrol 报告错误 SSL证书 无法获取本地颁发者证书 WGET 无法访问 wp cron php 很可能是由于 SSL
  • MagicSuggest动态ajax源码

    我在用着魔法建议 https github com nicolasbize magicsuggest对于自动完成输入文本 自动完成提要非常大 因此我无法完整下载它 在他们的示例中 他们提供了以下代码 脚本语言 document ready
  • 无法加载 php_curl

    我已经在WindowsXp上安装了php5 2 13 apache2 2 15 将C php添加到PATH ssystem变量中 我无法启用卷曲扩展 我配置了extension dir并删除了 在 php ini 中形成 php curl
  • PHP 如何保持下拉列表中选定的选项在提交时保持选中状态?

    I have
  • 用于查找 标记之间的所有内容的正则表达式

    我正在尝试找到一种方法来列出之间的所有内容 a and a 标签 所以我有一个链接列表 我想获取链接的名称 不是链接的位置 而是它们在页面上的名称 对我来说真的很有帮助 目前我有这个 lines preg split r n r conte
  • 在 Laravel 中使用 PUT/DELETE 有什么价值?

    用于将路由定义为资源Route resource 文档表明 Verb Path Action Route Name GET resource index resource index GET resource create create r
  • PHP 中使用 MVC 的 Post-Redirect-Get (PRG) 最佳实践

    PRG 模式与 MVC 是否有最佳实践 在本教程中 http www theserverside com news 1365146 Redirect After Post http www theserverside com news 13
  • 创建横幅交换算法来轮播广告

    我正在构建广告横幅轮播脚本基于印象整个月均匀地显示广告 每次请求显示广告时都会进行计算 所以这将是即时完成的 广告应显示为一个接一个轮流播放 而不是仅显示一个广告 1000 次展示 然后显示另一个广告 1000 次展示 大多数情况下 它应该

随机推荐