【发布时间】:2018-04-20 06:45:56
【问题描述】:
奇怪的是,我不仅没有找到答案,而且这个问题似乎根本不是问题。但是,这是给我的。
如何使用 PHPUnit 设置对父方法调用的期望?
我已经阅读了答案和讨论,其中的重点是“您无需对此进行测试,您只需测试它是否有效”。这是完全错误的。单元测试用于测试实现的内部结构。测试“它有效”是为了功能测试。
更多上下文:我有一个异常实现,它接受构造函数的附加参数,因此自然需要调用parent::__construct()方法,将消息、代码和内部异常转发给它。我知道父方法有效,我不需要对其进行测试:它是一个原生 PHP 类,即使不是,该代码也不在我正在测试的类中。所以,我只需要设置一些期望,其中之一就是使用适当的参数调用父 __construct() 方法。当然,构造函数并不是唯一需要这样做的情况。
有什么想法吗?
【问题讨论】:
-
单元测试用于测试实现的内部结构——通常情况并非如此。单元测试用于测试类的公共 API 的行为。不是它如何在内部实现这种行为。
-
类的想法是,它们从“用户”中抽象出某些东西是如何实现的,因此您的单元测试通常应该只测试类的行为而不是实现方法。有像
assertAttributeContains()这样的方法可以让您检查内部值,但要做好准备,当您更新任何依赖项时,您的测试可能会失败。
标签: php unit-testing mocking phpunit