问题标签 [phpunit]

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 投票
3 回答
3887 浏览

unit-testing - 使用 symfony + 教义 + PHPUnit 进行单元测试

我正在使用 Symfony + Doctrine + PHPUnit 和 NetBeans IDE。这是我目前的单元测试方法。

  • setUp() 函数从 .yml 文件加载测试夹具
  • tearDown() 函数从模型中删除所有数据。这是通过将我所有模型名称的数组循环到类似 Doctrine_Query::delete($modelName)->execute() 来完成的

这似乎可行,但我只是好奇这是否是正确的方法。我基本上是在每个测试函数之后通过指定模型/表来“全部删除”来清除所有表。

Q1:我只是想知道这是否是正确的方法... Q2:这在 Netbeans IDE 中运行良好,但似乎无法通过“./symfony test:unit”运行。我错过了什么还是 CLI 只适用于石灰?

0 投票
1 回答
550 浏览

php - 模拟新创建的实例?

我有没有使用 TDD 的旧代码现在我想为一个看起来像这样的函数编写一个测试

因为我对 phpunit 和测试没有太多经验,所以我的问题是:我如何模拟 DB_PG?我在测试中尝试了 getMock(),但由于该函数使用“new”来获取实例,所以我的模拟对象被忽略了,这是有道理的

所以我只看到 2 个选项

  1. 我不知道 phpunit 的一些特性 - 这就是我在这里问的原因 ^^
  2. 我必须修改旧代码 - 我知道这会更好

那么,有人知道选项1的答案吗?

谢谢大家

0 投票
5 回答
8443 浏览

php - 让 PHPUnit 忽略东西?

我有一个 PHPUnit 测试类,我想在测试运行中忽略它。我知道我可以通过重命名它以使其文件名中不包含单词 Test 来做到这一点,但我宁愿不这样做,因为它比我想要的更混淆了源代码控制水域。

有人有建议吗?

0 投票
5 回答
55746 浏览

php - 如何运行我所有的 PHPUnit 测试?

我有一个名为 Script.php 的脚本并在 Tests/Script.php 中对其进行测试,但是当我运行 phpunit Tests 时,它不会在我的测试文件中执行任何测试。如何使用 phpunit 运行所有测试?

PHPUnit 3.3.17,PHP 5.2.6-3ubuntu4.2,最新的 Ubuntu

输出:

这是我的脚本和测试文件:

脚本.php

测试/Script.php

0 投票
3 回答
2353 浏览

selenium - 如果 Selenium 服务器未运行,如何跳过 PHPUnit 中的测试?

我想添加一套 Selenium 测试作为应用程序的全局 PHPUnit 测试套件的一部分。我已将 Selenium 测试套件连接到全局AllTests.php文件中,并且在 Selenium 服务器运行时一切都运行良好。

但是,如果 Selenium 服务器没有运行,我希望脚本跳过 Selnium 测试,这样其他开发人员就不必为了运行测试而强制安装 Selenium 服务器。我通常会尝试在setUp每个测试用例的方法中进行连接,如果失败,则将测试标记为已跳过,但这似乎会抛出带有消息的 RuntimeException:

The response from the Selenium RC server is invalid: ERROR Server Exception: sessionId should not be null; has this session been started yet?

有没有人有一种方法可以在这种情况下将 Selenium 测试标记为已跳过?

0 投票
1 回答
1825 浏览

php - 使用 PHPunit 删除构造函数中的依赖项

在尝试测试遗留代码库时,我遇到了一个执行以下操作的对象:

此实例中的 Bar 有一个构造函数,它执行一些坏事,例如连接到数据库。我正试图集中精力测试这个 Foo 类,所以把它改成这样:

并尝试通过以下 PHPUnit 测试对其进行测试:

但是这不起作用 - Foo() 的构造函数在我的 ->expects() 被添加之前被调用,所以模拟的 getBarInstance() 方法返回一个空值。

有没有什么方法可以解除这种依赖关系,而不必重构类使用构造函数的方式?

0 投票
3 回答
10459 浏览

php - 无法通过 pear 安装 PHPUnit

可能重复:
通过 PEAR 安装 PHPUnit

phpunit 的安装说明正在运行:

第一个没问题,第二个我收到错误:

我刚刚使用来自 php.net(php 5.3.0)的最新 go-pear.phar 版本安装了 pear,也尝试php go-pear.php按照 pear 网站所说的那样运行。

runningpear -V给了我 1.7.2 版本,当我运行pear upgrade PEAR它说我的版本比当前 noe 1.9.0 新,如果运行pear upgrade -f PEAR强制升级,它会下载文件并成功安装,但我仍然有版本 1.7.2 和无法安装 phpunit。

我正在运行 windows vista,php 5.3.0

0 投票
2 回答
1879 浏览

zend-framework - 如何在 Zend PHPUnit Controller 测试中使用子域发送 url?

我想测试在子域 www.username.domain.com 上工作的控制器

问题是当我在 ControllerTestCase 调度它抛出 Zend_Controller_Dispatcher_Exception


路线.php:


用户控制器测试:


抽象控制器测试用例:

结果:

当我发送像 /login 这样的普通 URI 时,它运行良好,但问题是发送带有主机名的 URL。

有任何想法吗?谢谢你们。

0 投票
6 回答
42387 浏览

php - PHPUnit:验证数组是否具有给定值的键

给定以下课程:

这个测试用例:

如何验证$params(这是一个数组)并传递给$Other->post()包含一个名为“key1”的键,其值为“值 1”?

我不想验证所有的数组——这只是一个示例代码,在实际代码中,传递的数组有更多的值,我只想验证其中的一个键/值对。

$this->arrayHasKey('keyname')可以使用它来验证密钥是否存在。

还有$this->contains('Value 1'), 可以用来验证数组是否有这个值。

我什至可以将这两者与$this->logicalAnd. 但这当然不会产生预期的结果。

到目前为止,我一直在使用 returnCallback,捕获整个 $params,然后对其进行断言,但也许还有另一种方法可以做我想做的事?

0 投票
1 回答
3479 浏览

phpunit - PHPUnit 数据库扩展 - 如何有一个空的数据集?

我想创建一个空的测试表。使用 digitalsandwich 中的示例,我想要类似的东西:

我应该使用与 createFlatXMLDataSet() 不同的方法吗?或者???