我似乎在测试设置了私有实例变量时遇到了一些麻烦。我的想法是删除类并将实例变量公开,以便我可以测试 setter 方法。这看起来很简单,但我似乎无法让它正常工作。或者也许有一些更好的方法来测试设置私有变量。
班级
<?php
namespace PureChat\src\messages;
/**
* Message class for containing information about a message.
*/
class Message
{
/**
* Contains the message text.
* @var string
*/
private $messageText;
/**
* Sets the instance variable $messageText.
* @param string $text The text to assign.
*/
public function setText($text)
{
$this->messageText = $text;
}
}
PHP单元测试
<?php
use PureChat\src\messages\Message;
class MessageTest extends \PHPUnit_Framework_TestCase
{
public function testMessageCanSetText()
{
$message = new MessageStub;
$message->setText('test-text');
$this->assertEquals(
$message->messageText, 'test-text');
}
}
class MessageStub extends Message
{
public $messageText;
}
运行时,测试失败"Failed asserting that 'test-text' matches expected null."
我的第一个想法是存根类可能没有继承该setText
方法,所以我也使用 进行了测试method_exists
,但是该方法确实存在,所以我很茫然。