我想测试以下方法:
class SomeObject {
public function actionFromSomeController() {
$obj = new OtherObject();
$obj -> setAttributes();
$obj -> doAction();
}
}
class OtherObject {
private $_attr;
public function setAttributes() {
$this -> _attr = 'something';
Database :: execute('INSERT INTO table VALUES (' . $this -> _attr . ')');
$fileObj = new FileObj();
$content = $fileObj -> getSomeFileContent();
// do something else
}
public function doAction() {
echo $this -> _attr;
}
}
现在我想测试这个方法,它的输出取决于数据库内容和服务器上的一个文件。它在路上做了很多事情,输出只是一个ID和success => 1
。
我该如何正确测试?
答案 0 :(得分:0)
关于如何测试这样的小代码片段的一些想法:
$slugname = basename(get_permalink());
include $slugname.'.php';
/ echo
/ var_dump()
检查方法中不同位置的属性和变量内容测试绝不是一个自动过程,你总是要考虑做什么和不做什么是有意义的。这些要做的事情从来都不是神奇的,而是基本的PHP。
如果出现问题,您应该考虑让脚本抛出错误/异常。写作"沉默"应用程序几乎永远不会好,因为如果你真的需要在生产环境中进行静默执行,只需关闭错误报告并产生相同的效果。许多PHP函数在失败和/或成功时返回特殊内容,您可以检查这一点。数据库处理程序也是如此。帮自己一个忙,并使用这些返回值!