PHPUnit::如何测试带有受保护变量的 __construct ?
PhpUnit::如何测试带有受保护变量的 __construct ?
(并不总是我们应该添加公共方法 getVal()-soo,而不添加返回受保护变量值的方法)
示例:
class Example{
protected $_val=null;
function __construct($val){
$this->_val=md5 ($val);
}
}
编辑:
在返回 void 的函数中也存在测试问题
编辑2:
示例为什么我们需要测试__construct:
class Example{
protected $_val=null;
//user write _constract instead __construct
function _constract($val){
$this->_val=md5 ($val);
}
function getLen($value){
return strlen($value);
}
}
class ExampleTest extends PHPUnit_Framework_TestCase{
test_getLen(){
$ob=new Example();//call to __construct and not to _constract
$this->assertEquals( $ob->getLen('1234'), 4);
}
}
测试运行正常,但示例类“构造函数”未创建!
谢谢
PhpUnit::How can be __construct with protected variables tested?
(not always we should add public method getVal()- soo without add method that return protected variable value)
Example:
class Example{
protected $_val=null;
function __construct($val){
$this->_val=md5 ($val);
}
}
Edit:
also exist problem to test in function that return void
Edit2:
Example why we need test __construct:
class Example{
protected $_val=null;
//user write _constract instead __construct
function _constract($val){
$this->_val=md5 ($val);
}
function getLen($value){
return strlen($value);
}
}
class ExampleTest extends PHPUnit_Framework_TestCase{
test_getLen(){
$ob=new Example();//call to __construct and not to _constract
$this->assertEquals( $ob->getLen('1234'), 4);
}
}
test run ok, but Example class "constructor" wasn't created!
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
单元测试的主要目标是测试接口 默认情况下,您应该仅测试公共方法及其行为。如果没问题,那么您的类就可以供外部使用。但有时您需要测试受保护/私有成员 - 那么您可以使用 Reflection 和 setAccessible()方法
The main goal of unit testing is to test interface By default, you should test only public methods and their behaviour. If it's ok, then your class is OK for external using. But sometimes you need to test protected/private members - then you can use Reflection and setAccessible() method
创建一个派生类来公开要测试的值。
Create a derived class that exposes the value that you want to test.