小编Chr*_*isC的帖子

使用模拟服务进行Symfony 2功能测试

我有一个控制器,我想为其创建功能测试.该控制器通过MyApiClient类向外部API发出HTTP请求.我需要模拟这个MyApiClient类,所以我可以测试我的控制器如何响应给定的响应(例如,如果MyApiClient类返回500响应它将做什么).

MyApiClient通过标准的PHPUnit mockbuilder 创建类的模拟版本没有问题:我遇到的问题是让我的控制器将此对象用于多个请求.

我目前正在测试中执行以下操作:

class ApplicationControllerTest extends WebTestCase
{

    public function testSomething()
    {
        $client = static::createClient();

        $apiClient = $this->getMockMyApiClient();

        $client->getContainer()->set('myapiclient', $apiClient);

        $client->request('GET', '/my/url/here');

        // Some assertions: Mocked API client returns 500 as expected.

        $client->request('GET', '/my/url/here');

        // Some assertions: Mocked API client is not used: Actual MyApiClient instance is being used instead.
    }

    protected function getMockMyApiClient()
    {
        $client = $this->getMockBuilder('Namespace\Of\MyApiClient')
            ->setMethods(array('doSomething'))
            ->getMock();

        $client->expects($this->any())
            ->method('doSomething')
            ->will($this->returnValue(500));

        return $apiClient;
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎在第二个请求发生时正在重建容器,导致MyApiClient再次实例化.所述MyApiClient …

phpunit dependency-injection symfony

21
推荐指数
2
解决办法
1万
查看次数

OpenCV VideoWriter无法打开

我无法VideoWriter在Raspberry Pi(Raspbian Weezy)上实例化和打开用于录制视频的OpenCV .

我的项目是用C++编写的,但我编写了一个最小的Python程序来演示这个问题.

https://gist.github.com/chriscollins/11ff2f43852e1c93dae8

我的C++代码和上面的Python代码都在我的Windows机器上运行没有问题.有时候笔者不开,但是这是可以预料的-我没有安装所有列出的编解码器(编解码器的列表来自开放CV源),但相当多的人正常工作.然而,在Raspberry Pi上,C++代码和Python代码都失败了,VideoWriter永远不会被打开.在上面的Python代码中,writer.isOpened()当在Raspberry Pi上运行时,为每个编解码器返回false.

我已将chown目标目录编辑为我正在运行Python脚本的用户,并将chmod其设置为ded,777因此我不相信它是权限问题.我认为它可能与我如何安装OpenCV或其某些依赖项有关,但我不确定如何纠正它.

我使用的安装过程如下:

  1. 更新通过固件/包rpi-update,apt-get updateapt-get upgrade.

  2. 通过以下方式安装以下依赖项apt-get: libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec53 libavformat53 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev libgtk2.0-dev

  3. 下载并解压缩http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/root/opencv-2.4.9.

  4. cd /root/opencv-2.4.9并运行cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_PERF_TESTS=OFF -DBUILD_opencv_gpu=OFF -DBUILD_opencv_ocl=OFF.可通过https://gist.github.com/chriscollins/d8060e03a6acd6d4336c获得cmake的输出

  5. makemake …

linux opencv ffmpeg codec raspberry-pi

13
推荐指数
1
解决办法
2280
查看次数

Git:为发布选择更改的子集

我正在尝试找出从一个分支到另一个分支选择提交子集的最佳方法,同时对我的特定工作流程的历史记录(例如重复提交)的影响最小。这是我的工作流程的描述,以及我尝试使用它的场景。

工作流程

master:代表当前在生产服务器上的内容。

开发:生产服务器上的代码,加上经过代码审查的最新更改。如果没有任何问题,在下一个生产版本执行时,develop 将合并到 master。

feature-x:新功能的分支,取自开发负责人。Pull-request 用于开发,在通过代码审查时合并。

设想

feature-1:已开发,通过code-review,合并开发。

feature-2:已开发,通过code-review,合并开发。

feature-3:已开发,通过code-review,合并开发。

客户决定功能-2应该没有发布功能1功能3feature-2是一个独立的更改,即它不依赖于feature-1 中引入的任何内容。

我现在需要让feature-2掌握,没有feature-1feature-3

建议的方法

如果我尝试将 feature-2 的单独拉取请求发送到 master,那么这也将释放 feature-1,因为 feature-1 的提交存在于 feature-2 分支中。

如果我尝试git cherry-pick从 feature-2 提交到 master,那么在 develop 下一次合并到 master 时(即下一个版本发生时),提交将被复制。使用一个简单合并的简单示例对此进行测试,但git log显示包含在 feature-2 分支中的任何内容的重复提交。

有没有其他选择?在这种情况下,如果没有办法解决,我可以忍受稍微凌乱的历史记录,但理想的解决方案是避免重复提交。我还想避免 rebase master 或 develop,因为当发生这种情况时,可能会有其他 feature-x 分支处于活动状态。

任何帮助表示赞赏。

git version-control merge github

6
推荐指数
1
解决办法
1178
查看次数