问题标签 [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 投票
11 回答
20947 浏览

php - 使用需要发送标头的项目进行单元测试

我目前正在与 PHPUnit 一起尝试开发测试以及我正在编写的内容,但是,我目前正在编写会话管理器,并且在这样做时遇到了问题......

会话处理类的构造函数是

但是,由于 PHPUnit 在开始测试之前会发送文本,因此对该对象的任何测试都会返回失败的测试,因为 HTTP“标头”已经发送...

0 投票
6 回答
56993 浏览

unit-testing - 测试抽象类

如何使用 PHPUnit 测试抽象类的具体方法?

我希望我必须创建某种对象作为测试的一部分。虽然,我不知道这个的最佳实践,或者 PHPUnit 是否允许这样做。

0 投票
10 回答
148184 浏览

php - 使用 PHPUnit 测试受保护方法的最佳实践

我发现关于你是否测试私有方法的讨论内容丰富。

我已经决定,在某些类中,我希望有受保护的方法,但要测试它们。其中一些方法是静态的和简短的。因为大多数公共方法都使用它们,所以我以后可能可以安全地删除测试。但是为了从 TDD 方法开始并避免调试,我真的很想测试它们。

我想到了以下几点:

  • 答案中建议的方法对象似乎对此有点过分了。
  • 从公共方法开始,当更高级别的测试给出代码覆盖率时,将它们保护起来并删除测试。
  • 继承具有可测试接口的类,使受保护的方法公开

哪个是最佳实践?还有别的事吗?

看起来,JUnit 自动将受保护的方法更改为公共的,但我没有深入研究它。PHP 不允许通过反射进行此操作。

0 投票
11 回答
93752 浏览

php - 如何让 PHPUnit MockObjects 根据参数返回不同的值?

我有一个 PHPUnit 模拟对象,'return value'无论它的参数是什么,它都会返回:

我想要做的是根据传递给模拟方法的参数返回一个不同的值。我试过类似的东西:

但是,如果没有使用参数调用模拟,这会导致 PHPUnit 抱怨'two',所以我假设 的定义methodToMock('two')覆盖了第一个的定义。

所以我的问题是:有没有办法让 PHPUnit 模拟对象根据其参数返回不同的值?如果是这样,怎么办?

0 投票
7 回答
66024 浏览

php - phpunit 避免模拟的构造函数参数

避免 phpunit 必须调用模拟对象的构造函数的方法是什么?否则我需要一个模拟对象作为构造函数参数,另一个用于那个等等。api似乎是这样的:

我不让它工作。$callOriginalConstructor即使设置为 false ,它仍然会抱怨构造函数参数。

我在构造函数中只有一个对象,它是一个依赖注入。所以我认为我在那里没有设计问题。

0 投票
5 回答
9977 浏览

php - 哪个 PHP 单元测试框架:simpletest、phpunit 还是?

我是simpletest的忠实粉丝,因为这是我所知道的。它对模拟和网络测试有很好的支持。

但我总是害怕停滞不前,所以任何令人信服的转换论点都会受到赞赏。

0 投票
2 回答
1945 浏览

php - PHPUnit 文件命名约定

我刚刚开始在一些现有代码上尝试 phpunit。我们使用的命名约定是 MyClass 类应该在 MyClass.class.php 中。PHPUnit 似乎要求该文件应称为 MyClass.php。

有没有办法解决?

我在尝试生成骨架测试类时注意到了它:

0 投票
2 回答
6572 浏览

php - 使用 PHPUnit 对 Doctrine 对象进行单元测试

我开始尝试使用 PHPUnit 测试我的 Doctrine 对象,并且希望每次都从我的模型对象中重新加载数据库。

我的第一次尝试看起来像这样:

问题是当第二次测试再次调用 setUp() 时, createTablesFromModels() 失败,所以我收到一个错误,因为没有表存在。

我非常感谢其他人如何为 PHPUnit 或其他单元测试目的重新初始化 Doctrine 连接的示例。

0 投票
1 回答
36325 浏览

php - 如何测试 PHPUnit 模拟对象中的第二个参数

这就是我所拥有的:

但是该方法应该采用两个参数。我只是在测试第一个参数是否正确传递(如 $arg1)。

如何测试第二个参数?

0 投票
6 回答
7672 浏览

php - 在 PHPUnit 中模拟对象以模拟静态方法调用?

我正在尝试测试一个管理数据库中数据访问的类(本质上是 CRUD)。我们使用的 DB 库恰好有一个 API,您首先通过静态调用获取表对象:

...你明白了。

我们正在尝试测试此方法,但要模拟 DataObject 的东西,以便 (a) 我们不需要实际的数据库连接来进行测试,并且 (b) 我们甚至不需要包含 DB_DataObject 库来进行测试.

但是,在 PHPUnit 中,我似乎无法让 $this->getMock() 适当地设置静态调用。我有...

...但测试仍然显示未知方法“工厂”。我知道它正在创建对象,因为在它说找不到 DB_DataObject 之前。现在可以了。但是,没有办法吗?

我真正想做的是有两个模拟对象,一个也用于返回的表对象。所以,我不仅需要指定 factory 是一个静态调用,还需要它返回一些我已经设置的指定的其他模拟对象。

我应该提醒一下,我不久前在 SimpleTest 中做过这个(找不到代码)并且效果很好。

是什么赋予了?

[更新]

我开始明白它与expects()有关