Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
使用带有phpspec的Guzzle API客户端测试Symfony 2捆绑包_Php_Unit Testing_Symfony_Phpspec - Fatal编程技术网

使用带有phpspec的Guzzle API客户端测试Symfony 2捆绑包

使用带有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/

早上好

我最近创建了一个与第三方API集成的Symfony 2捆绑包。 我使用Guzzle和很棒的服务描述来创建客户机并调用API

现在我想提高质量,并添加一些测试。经过一些阅读,我想到了使用phpspec进行客户端的功能测试,并使用Behat进行行为测试。 我已经读到你可以模拟API响应,但我不知道怎么做。虽然phpspec在prophecy中有一个模拟库,但我找不到任何例子来模拟prophecy中的响应

我有我的规格创建与

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);
    }
}