Phpunit Dataprovider可以从安装程序获取连接 通过安装程序()连接到数据库失败 连接到数据库本身的工作
如果我通过数据提供程序通过Phpunit Dataprovider可以从安装程序获取连接 通过安装程序()连接到数据库失败 连接到数据库本身的工作,phpunit,Phpunit,如果我通过数据提供程序通过setUp function连接数据库,它会响应致命错误:调用成员函数query(),但是如果连接到数据库本身工作,那么dataProvider能否获得setUp function的设置?这是通过设计实现的:为了确定测试的数量,PHPUnit在实际运行测试(和安装方法)之前运行数据提供程序 从: 注: 在调用setUpBeforeClass静态方法和第一次调用setUp方法之前,将执行所有数据提供程序。因此,您无法访问从数据提供程序中创建的任何变量。这是PHPUnit能
setUp function
连接数据库,它会响应致命错误:调用成员函数query()
,但是如果连接到数据库本身工作,那么dataProvider
能否获得setUp function
的设置?这是通过设计实现的:为了确定测试的数量,PHPUnit在实际运行测试(和安装方法)之前运行数据提供程序
从:
注:
在调用setUpBeforeClass静态方法和第一次调用setUp方法之前,将执行所有数据提供程序。因此,您无法访问从数据提供程序中创建的任何变量。这是PHPUnit能够计算测试总数所必需的
在您的情况下,我会对DB使用单例/实例模式。尝试重写构造函数:
public function __construct($name = null, array $data = [], $dataName = '')
{
$this->db = new Core\Database('unitest');
}
另一种方法是使用
public function test\u foo($var\u name){
变量转储(
self::${$var\u name}//这与'self:::$bar'相同。
);
}
公共功能数据_foo(){
返回数组(
排列(
'bar',//这是一个_字符串u,包含变量的_名称u,而不是变量本身。
),
);
}
数据提供程序传递变量的名称,测试函数使用该名称直接访问静态成员
class ChanTest extends PHPUnit_Framework_TestCase
{
protected $db;
protected function setUp()
{
$this->db = new Core\Database('unitest');
}
public function testData($a, $b, $c)
{
$this->db->query('SELECT `a`, `b`, `c` FROM `units`');
foreach ($this->db->rows() as $item) {
$this->assertEquals($item['a'] + $item['b'], $item['c']);
}
}
}
public function __construct($name = null, array $data = [], $dataName = '')
{
$this->db = new Core\Database('unitest');
}