我无法理解我应该如何对使用 \Guzzle\Common\Event 并且没有回报的方法进行单元测试。我有一个功能
public function setRequest(\Guzzle\Common\Event $e) {
$e['request']->getQuery()->set('key', $this->getKey());
}
我无法获得Guzzles 模拟对象文档中描述的方法来生成成功的测试。为了使它起作用,需要嘲笑什么?getQuery() 是我猜的 \Guzzle\Http\Message\Request 的一部分?set() 呢?
编辑:到目前为止我所做的是这样,但我不知道这是否是正确的方法。它成功了,但它没有断言任何测试。如果该方法没有返回任何内容,我不知道我可以。
public function testSetRequest()
{
$collection = $this->getMock('Guzzle\\Common\\Collection');
$collection->expects($this->once())
->method('set')
->will($this->returnValue(array('key' => 321)));
$request = $this->getMockBuilder('Guzzle\\Http\\Message\\Request')
->disableOriginalConstructor()
->getMock();
$request->expects($this->once())
->method('getQuery')
->will($this->returnValue($collection));
$event = $this->getMock('Guzzle\\Common\\Event');
$event->expects($this->once())
->method('offsetGet')
->with('request')
->will($this->returnValue($request));
$result = $this->place->setRequest($event);
}
我将 set() 跟踪到 guzzle common 集合。顺便说一句,$this->place 只是指被测试对象的实例,在 setUp() 函数中设置。