使用带有phpspec的Guzzle API客户端测试Symfony 2捆绑包
早上好 我最近创建了一个与第三方API集成的Symfony 2捆绑包。 我使用Guzzle和很棒的服务描述来创建客户机并调用API 现在我想提高质量,并添加一些测试。经过一些阅读,我想到了使用phpspec进行客户端的功能测试,并使用Behat进行行为测试。 我已经读到你可以模拟API响应,但我不知道怎么做。虽然phpspec在prophecy中有一个模拟库,但我找不到任何例子来模拟prophecy中的响应 我有我的规格创建与使用带有phpspec的Guzzle API客户端测试Symfony 2捆绑包,php,unit-testing,symfony,phpspec,Php,Unit Testing,Symfony,Phpspec,早上好 我最近创建了一个与第三方API集成的Symfony 2捆绑包。 我使用Guzzle和很棒的服务描述来创建客户机并调用API 现在我想提高质量,并添加一些测试。经过一些阅读,我想到了使用phpspec进行客户端的功能测试,并使用Behat进行行为测试。 我已经读到你可以模拟API响应,但我不知道怎么做。虽然phpspec在prophecy中有一个模拟库,但我找不到任何例子来模拟prophecy中的响应 我有我的规格创建与 bin/phpspec desc NewFusion/Bundle/
bin/phpspec desc NewFusion/Bundle/HyperMediaBundle/Service/VehicleService
它在Bundle/spec/文件夹中创建了我的spec类
这是我希望通过此测试模拟的响应:
HTTP/1.1200ok
缓存控制:没有缓存,没有存储,必须重新验证
连接:保持活力
内容类型:application/vnd.siren+json;字符集=UTF-8
日期:2014年2月12日07:43:00 GMT
过期时间:1970年1月1日星期四格林威治标准时间00:00:00,0
保持活动状态:超时=15,最大=100
Pragma:没有缓存
服务器:Jetty8.y.z-SNAPSHOT
传输编码:分块
Via:1.1本地测试
{
类别:[
制作
],
特性:{
makeCode:1,
姓名:阿尔法罗密欧
},
链接:[
{
rel:[
自己
],
href:
},
{
rel:[
模型
],
href:
}
]
}
我希望有人能让我走上正轨:hmm我已经取得了一些进展。。我必须注入客户端,然后使用guzzle模拟插件模拟响应。关于然后使用phpspec的方法测试/验证响应。phpspec不是功能测试工具。它是一个单元测试工具。此外,与tdd相比,在事后使用它编写测试要困难一些。是的,我知道。。我把概念和行为混为一谈。我现在正在进行重构,以便将我的servicebuilder注入到规范文件中。之后,我将重构我的测试:
<?php
namespace spec\NewFusion\Bundle\HyperMediaBundle\Service;
use PhpSpec\ObjectBehavior;
use Prophecy\Argument;
class VehicleReferenceDataServiceSpec extends ObjectBehavior
{
function it_is_initializable()
{
$this->shouldHaveType('NewFusion\Bundle\HyperMediaBundle\Service\VehicleReferenceDataService');
}
function it_should_return_make_name() {
$this->getMake(array('makeCode' => 1))->shouldReturn(TRUE);
}
}