PHPUnit+;Guzzle:测试方法之间的Cookie持久性
我正在使用PHPUnit和Guzzle进行API单元测试。我遇到的问题是,我不能或者我不能真正弄清楚如何在我的测试方法之间保持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
testGetFirst
获取数据并在服务器端设置会话cookie。响应有一个带有正确Cookie的Set Cookie
头
如果cookie存在,seconde testtestGetSecond
应该返回一个数据集。不幸的是,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
方法可以将其作为参数接收。有关将参数传递到依赖测试的更多信息,请查看