php - 测试需要扩展类才有意义的抽象 php-class 静态方法
问题描述
我有一种情况,我看不到如何正确测试它。
让我们假设以下结构:
- MyAbstractBaseClass有一个静态方法getConstants,它返回所有 const 字段,而 MyAbstractBaseClass没有任何此类字段。
- MyExtendingClass扩展MyAbstractBaseClass
现在我想在不使用基类的具体扩展的情况下测试getConstants 。我已经看到可以为抽象类实现获取模拟,但我还没有发现向模拟添加字段的可能性,这对于进行有意义且同时不依赖的测试来说是必要的在一个具体的扩展上。
所以我的问题是:我怎样才能做到这一点?
解决方案
匿名类在这些测试中运行良好:
final class MyAbstractBaseClassTest extends TestCase
{
/**
* @test
*/
public function it_should_return_all_constants()
{
$subject = new class extends MyAbstractBaseClass {
const SOME_CONSTANT = 'SOME VALUE';
const ANOTHER_CONSTANT = 'ANOTHER VALUE';
};
self::assertEqualsCanonicalizing(['SOME_CONSTANT', 'ANOTHER_CONSTANT'], $subject::getConstants());
}
/**
* @test
*/
public function it_should_return_an_empty_list_when_there_are_no_constants()
{
$subject = new class extends MyAbstractBaseClass {};
self::assertEquals([], $subject::getConstants());
}
}
推荐阅读
- smpp - 使用通道用于溢出通道 SMPP
- reactjs - 如何在反应中使用 :active 或 :focus 样式?
- javascript - 允许 Firefox AddOn 聚焦窗口
- javascript - 如何保持用户登录我的网站?
- python - python 字典列表按键添加值
- python - 绘制轮廓并对其进行着色
- php - 使用 ACF 输出图像的问题
- spring-boot - 如何在不构建它的情况下在 Spring Boot 中开发/测试 Angular
- camera - jetson xavier nx 相机不适用于奶酪
- python-3.x - 获取 Python 数据框列中所有可能的对组合