gpt4 book ai didi

php - 在 PHP 中测试 getter

转载 作者:行者123 更新时间:2023-11-28 20:54:47 25 4
gpt4 key购买 nike

class myclass {

private $myemail = '';
private $myPrefix = '';


/**
* @return string
*/
public function getmyPrefix()
{
return $this->myPrefix;
}

/**
* @return string
*/
public function getmyEmail()
{
return $this->myemail;
}

/**
* @param string $email
*/
public function setmyEmail($email)
{
$this->myemail = $email;
}
}

我想编写一个 php 单元测试来测试此类中的私有(private)变量,但我不确定如何测试变量 $myPrefix,因为它没有 setter ?我需要创建一个模拟类吗?

谢谢

最佳答案

您可以通过简单地测试类的返回来进行简单测试以确保初始值为空。然后使用您的 Setter 或 __construct() 填充该字段,并再次测试从 getter 返回的结果。

可选地,您不需要进入这个测试内部私有(private)字段的级别,因为它们不应该从模块外部更改,您可以使用反射。

我有一些基于输入做事的库类,我确实使用反射来测试要更新/设置的奇怪设置,因为我希望函数/方法正常工作。这是谨慎进行的,因为不应在代码库外部更改私有(private)值,但测试是为了开发人员文档目的,并确保代码中的基本功能和假设没有被破坏。

来自PHP Manual

    $class = new ReflectionClass('myClass');
$property = $class->getProperty('myPrefix');
$this->assertEquals("Something from your setter", $property);

我只会用它来确保 set 方法(或构造函数)直接设置字段,而不是以任何方式对其进行操作。但是,对于 get 方法,这不是必需的,因为 get..() 可以对此进行测试。我只添加了快速引用代码以显示您可以测试没有 get 方法的值。

关于php - 在 PHP 中测试 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28947531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com