Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPUnit+;Guzzle:测试方法之间的Cookie持久性_Php_Cookies_Phpunit_Session Cookies_Guzzle - Fatal编程技术网

PHPUnit+;Guzzle:测试方法之间的Cookie持久性

PHPUnit+;Guzzle:测试方法之间的Cookie持久性,php,cookies,phpunit,session-cookies,guzzle,Php,Cookies,Phpunit,Session Cookies,Guzzle,我正在使用PHPUnit和Guzzle进行API单元测试。我遇到的问题是,我不能或者我不能真正弄清楚如何在我的测试方法之间保持cookie。也许我做错了^^ 第一个测试testGetFirst获取数据并在服务器端设置会话cookie。响应有一个带有正确Cookie的Set Cookie头 如果cookie存在,seconde testtestGetSecond应该返回一个数据集。不幸的是,Guzzle::Client似乎没有在方法之间存储/持久化cookie 使用PHPUnit\Framewor

我正在使用PHPUnit和Guzzle进行API单元测试。我遇到的问题是,我不能或者我不能真正弄清楚如何在我的测试方法之间保持cookie。也许我做错了^^

第一个测试
testGetFirst
获取数据并在服务器端设置会话cookie。响应有一个带有正确Cookie的
Set Cookie

如果cookie存在,seconde test
testGetSecond
应该返回一个数据集。不幸的是,
Guzzle::Client
似乎没有在方法之间存储/持久化cookie

使用PHPUnit\Framework\TestCase;
使用http\Client;
类MyTest扩展了Testcase
{
公众客户;
/**
*@以前
*/
函数initVariables(){
$this->guzzleClient=新客户端([
'基本uri'=>'http://apiuri.com',
“cookies”=>正确
]);
}
//此调用获取一些数据并在服务器端设置cookie(会话cookie)
函数testGetFirst(){
$params=[
“查询”=>[
“参数1”=>“myparam”
]                
];
$response=$this->guzzleClient->request('GET','/',$params);
//如果我打印出响应标题,我会在“设置cookie”标题中获得cookie
//我想曲奇饼的设置是正确的
打印($response->getHeaders());
//如果我打印出客户端配置cookie,我也会得到cookie
打印($this->guzzleClient->getConfig('cookies')->toArray());
}
//此调用获取数据以访问它需要使用testGetFirst设置的cookie
//但不幸的是,发出请求时cookie是空的
/**
*@testGetFirst
*/
函数testGetSecond(){
$params=[
“查询”=>[
“param1”=>“你好”
]
];
//如果我打印出客户端配置cookie,cookie是空的
打印($this->guzzleClient->getConfig('cookies')->toArray());
$response=$this->guzzleClient->request('GET','/second',$params);
//由于请求无法访问cookie,因此会发送错误响应
}
}
我知道有
CookieJar
我可以在每个方法中使用,并将
Set Cookie
值传递到
Jar
中,但我只是想避开它

你有什么想法或建议吗


非常感谢你的帮助

由于
initVariables
方法的
@before
注释,此方法在每次测试之前执行。该方法是在每次测试之前创建一个新的客户端

为了解决您的特殊情况,由于您使用的是
@dependens testGetFirst
注释,因此可以让
testGetFirst
方法返回客户机对象。然后,
testGetSecond
方法可以将其作为参数接收。有关将参数传递到依赖测试的更多信息,请查看