1

我无法理解我应该如何对使用 \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() 函数中设置。

4

0 回答 0