问题标签 [zend-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
805 浏览

php - Zend Framework 2 - 单元测试

我想创建一个简单的访问单元测试,如教程中所示。

我的项目ZFCUser用于身份验证。

结果,我的(显然未经过身份验证的)测试人员得到HTTP response302 而不是预期的 200。

有什么想法我能做些什么吗?谢谢!

本教程中的代码如下所示:

0 投票
2 回答
236 浏览

php - 当我的数据库权限受到限制时,如何测试我的 Zend Framework 模型?

我正在开发一个 PHP(Zend Framework 1.12.1)应用程序,该应用程序以某种独特的方式连接到数据库。

基本上,我们有一个对我来说是一个“黑匣子”的 Oracle 数据库。我没有权限直接选择、更新、插入或删除任何行或表。我只能访问数据库视图(仅限选择),当我想插入/更新/删除数据时,我必须调用一个或多个存储过程。我不知道实际的表结构是什么,而且我认为任何时候都不会有人给我访问权限。

所有这一切都使得对我的模型进行单元测试非常困难(更不用说编写它们了),因为 ZF 似乎假设您的应用程序在数据库中拥有完全权限。(这就是为什么我到目前为止只对我的模型进行了手动测试,而且我的模型有些不寻常。)

我的应用程序有效,但我厌倦了手动测试。

以前有没有其他人遇到过这种情况?您能否推荐在数据库权限有限的环境中实现自动化 PHPUnit 测试的具体步骤?我已经要求 db 管理员给我一个resetTestData()名为/ 或拆除。显然,在每次测试之前Zend_Test_PHPUnit_DatabaseTestCase尝试truncate数据集,然后调用getDataSet()以获取数据并重新填充数据库。解决问题?

0 投票
1 回答
1115 浏览

php - PHP ZF2单元测试调度方法非常慢

我需要测试一个用 ZF2 编写的大型网站。有 443 个测试和大约 10000 个断言。代码覆盖率测试需要 6 个小时!我想我发现了问题:在控制器的测试中,我使用了 AbstractHttpControllerTestCase 的调度方法。每次测试后,调度方法的执行时间都会增加(从几分之一秒到几十秒)。

我使用 ZF 2.1.3、PHPUnit 3.7、PHP_CodeCoverage 1.2、Xdebug v2.2.1、PHP 5.4.7。

我的调度方法:

parent::dispatch 是来自 AbstractHttpControllerTestCase 的方法。

测试样本:

请帮忙。谢谢。


更新:

我使用进程隔离并在大约 15 分钟内完成测试(没有代码覆盖),但在测试中出现错误,标记为已跳过:

0 投票
1 回答
479 浏览

phpunit - PHPUnit 模拟对象替换真实类

我的测试套件中有几个测试在 Zend_Test 中运行

一个测试Foo_Bar_Baz通过 PHPUnit 的 MockBuilder 创建一个模拟作为该类的依赖项。现在在测试中Foo_BAR_baz(改变大小写是故意的,并且由于自动加载是必要的),我没有得到类,而是模拟的一个实例,这显然不起作用。

var_dump对对象执行 a会导致class Foo_Bar_Baz#27115(0) { }它似乎是在创建模拟实例。

修复模拟中的情况可以让事情按预期工作。我以前从未在模拟对象中看到过这种行为。由于某种原因,模拟类被加载到 PHP 中,因此当下一个测试尝试实例化真实对象时,它会实例化模拟类。为什么会发生这种情况?

0 投票
3 回答
1201 浏览

phpunit - 找不到类 PHPUnit\Framework\ExpectationFailedException

当我尝试使用此命令运行失败的测试时: ./vendor/bin/phpunit 我收到此致命错误:

0 投票
2 回答
473 浏览

php - 对象模拟 - 如何在服务管理器中用服务替换工厂?

我在让我的单元测试工作时遇到了一些麻烦。我正在测试一个使用工厂创建的服务的控制器。我想要实现的是用模拟服务替换工厂,这样我就可以在不使用活动数据库连接的情况下执行测试。

设置

在我的服务管理器的配置文件中,我指向一个工厂。工厂需要一个我不想在单元测试期间使用的活动数据库连接。

注意:出于说明目的,我更改了类名和简化配置。

该服务使用我现在不会进入的映射器,因为这与情况无关。映射器在他们自己的测试用例中进行测试。服务本身也有自己的测试用例,但需要存在才能让控制器的操作起作用。

控制器操作只是从服务接收信息。

注意:同样,为了便于说明,我更改了类名并简化了示例。

我试过的

在我的测试用例中,我尝试像这样覆盖所需的工厂:

乍一看,这看起来很棒,但它不起作用。它似乎只是将服务附加到服务管理器的服务列表中,而不是覆盖工厂。

更改$services->setService$services->setFactory需要我建立另一个工厂。我能做的是创建一个工厂,将模拟映射器注入到服务中,但感觉不对。我正在测试控制器,而不是服务或映射器,所以我试图避免这样的复杂解决方案,以保持我的测试用例简单明了。

关于我的情况有什么选择吗?是否可以在服务管理器中使用服务覆盖工厂,还是我看错了?

0 投票
0 回答
484 浏览

php - 使用类常量时忽略 PHPUnit 测试

我正在使用 PHPUnit6.2.2和 zendframework/zend-test3.1.0为 Zend Framework 3 应用程序编写集成测试,并观察以下行为:

当我在测试类中定义一个常量时,例如

并在配置文件中使用它,例如

测试类被完全忽略。(用 . 检查assertTrue(false)。)当我用FooTest::MY_CONST一个值替换配置文件时,一切都会再次运行。

看起来像一个错误,但我无法找出它是 PHPUnit 中的错误还是Zend\Test. 以前有人观察过这种行为吗?想法,它可能是由什么引起的(为 PHPUnit 或创建错误票证Zend\Test)?


phpunit.xml

test/Bootstrap.php

0 投票
0 回答
1774 浏览

phpunit - PHPUnit\Framework\Error\Warning: ini_set(): 标头已发送。您目前无法更改会话模块的 ini 设置

我正在按照zend 的教程在我的项目中使用 zend-test,但是我收到了这个错误

为了建立我的项目基础,我完成了本书的大部分内容。

我也在使用 PHP 7.2。

当我在谷歌搜索时,我发现很多人在使用 PHP 7.2 和 PHP 单元时遇到了问题,但现在看起来没问题。zend-test 是否也在更新?如果没有,我现在可以做些什么来使用 zend-test?如果是,我如何获得最新版本?

编辑

经过一番测试,我发现了问题,它在引导功能上:

更具体地说,问题从这一行开始:

编辑 2

删除它使用的 e 行,它比工作好,但开始在类似行的另一个模块中给出相同的错误:

0 投票
1 回答
139 浏览

zend-framework3 - 如何在 ZFC RBAC 下使用 PHPUnit 测试 Controller

我对单元测试还很陌生,并且刚刚开始学习如何使用测试使我的应用程序更可靠的旅程。

我正在使用 Zend Framework 3 并遵循本指南https://docs.zendframework.com/tutorials/unit-testing/

我想要做的是测试一条需要用户经过身份验证并具有正确 ZFR Rbac 角色的路由。

在我运行测试的那一刻,我收到以下错误:

所以我的问题是如何在测试中设置 RBAC?

0 投票
1 回答
139 浏览

zend-framework2 - 单元测试时类型错误异常(zend-test,PHPUnit)

我正在尝试在 Zend FrameWork 中测试一个简单的控制器操作,但我不能 100% 确定为什么我的模拟不起作用。

原动作:

我对此操作的测试

错误信息

为了完整性,Rbac 类

预后

似乎没有调用模拟...