【发布时间】:2016-04-25 01:19:32
【问题描述】:
我有一个“配置”类,它有一个方法“getConfig”,它读取一个配置文件“config.ini”,其中我有所有应用程序配置(数据库凭据和主机,一些 api 密钥,......)
现在我有这个单元测试来测试配置文件中是否存在数据库条目,同时确认方法“getConfig”返回的数组具有键“database”:
function testConfigFileHasDatabaseEntry()
{
$configuration = Configuration::getInstance();
$arrConfig = $configuration->getConfig();
$this->assertArrayHasKey('database', $arrConfig);
}
我还有另一个单元测试确认“getConfig”返回一个数组类型的变量。
我的问题如下: 就单元测试最佳实践而言,在这种情况下,这个测试是否足以确认函数 getConfig 是否经过良好测试,或者最好确认每个键都存在于配置文件中。我认为确认所有条目都在配置文件中可能属于另一类测试,但我想确定。
让我知道在这种情况下最佳做法是什么。
基于 gcontrollez 的回答,我意识到最好发布类源代码:
<?php
/**
* Loads the configuration file
*/
namespace Example\Lib;
class Configuration {
private static $instance;
private $arrConfig;
/**
* Constructor: loads the config file into property arrConfig and dies if unable
* to load config file
*
* @return void
*/
private function __construct()
{
$this->arrConfig = parse_ini_file("config/settings.ini", true);
if ($this->arrConfig == false){
die("Cannot load configuration file");
}
}
/**
* returns an instance of this singleton class
*
* @return Configuration
*/
public static function getInstance()
{
if (self::$instance == null){
self::$instance = new Configuration();
}
return self::$instance;
}
/**
* Getter for the property arrConfig
*
* @return array:
*/
public function getConfig() {
return $this->arrConfig;
}
}
谢谢
【问题讨论】:
标签: unit-testing phpunit