我正在尝试编写一些测试,其中我使用config.php
文件中的数据。这些文件位于同一文件夹中。
我知道我不能包含类内的文件,但我也不知道在我的phpunit测试类中使用这些精美数据的正确方法是什么。
这个课程看起来像这样:
<?php
require dirname(__FILE__).'/../../src/vendor/autoload.php';
$config = require "config.php";
use GuzzleHttp\Client;
echo $config['base_url']; //HERE I GET THE DATA
class ApiAdTest extends PHPUnit_Framework_TestCase
{--
public function testApiAd_postAd()
{
$client = new Client(['base_uri' => --DATA FROM CONFIG.PHP--]);
$response = $client->post(--DATA FROM CONFIG.PHP--, ['form_params' => [
'name' => 'bellow content - guzzle testing',
'description' => 'guzzle testing ad - demo'
]]);
$code = $response->getStatusCode();
$data = json_decode($response->getBody());
$adId = $data->id;
$this->assertEquals($code, 200);
return $adId;
}
在我的测试类中使用config.php中的这些数据的正确方法是什么?
更新: config.php内容:
<?php
return array(
'base_url' => 'http://10.0.0.0/',
'path' => 'api/ad/',
);
答案 0 :(得分:1)
您可以在测试用例的setup方法中加载config.php文件并将值赋值给class属性,然后您可以在测试方法中使用如下:
<?php
require dirname(__FILE__).'/../../src/vendor/autoload.php';
use GuzzleHttp\Client;
class ApiAdTest extends PHPUnit_Framework_TestCase
{
protected $config;
protected function setUp()
{
$this->config = require("config.php");
}
public function testApiAd_postAd()
{
$client = new Client(['base_uri' =>$this->config['base_url'] ] );
$response = $client->post($this->config['path'], ['form_params' => [
'name' => 'bellow content - guzzle testing',
'description' => 'guzzle testing ad - demo'
]]);
$code = $response->getStatusCode();
$data = json_decode($response->getBody());
$adId = $data->id;
$this->assertEquals($code, 200);
return $adId;
}
}
希望这个帮助
答案 1 :(得分:0)
如果您正在使用composer,我想用于设置配置的包名为PHP Dotenv。
它在项目的根目录中使用Cookie ck = new Cookie("testCookie","");
文件,并允许您将自己的设置添加到PHP的.env
数组中。然后,您可以使用$_ENV
在任何您希望使用它们的地方将它们拉出来。
然后,您可以将getenv()
添加到.env
文件中,这样就不会意外地将其提交给源代码管理。
答案 2 :(得分:0)
作为本机PHP解决方案,我建议使用composer的自动加载器来加载额外的配置文件。为此,您可以在files
文件中定义composer.json
数组,如下所示:
{
"autoload": {
"files": ["config.php"]
}
}
然后在配置文件中,我将创建一个全局函数来访问配置变量:
<?php
function config($item) {
$config = [
// Config variables here
];
return $config[$item];
}
运行composer dumpautoload
后,您可以在应用程序中全局访问config()
以获取配置项。
(您可能希望根据您的要求调整此解决方案,我更喜欢使用我以前的答案)
注意:如果您正在使用源代码管理,请不要提交config.php文件,因为这存在安全风险