我有一个控制器,我想为其创建功能测试.该控制器通过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 …
我无法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或其某些依赖项有关,但我不确定如何纠正它.
我使用的安装过程如下:
更新通过固件/包rpi-update,apt-get update和apt-get upgrade.
通过以下方式安装以下依赖项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
下载并解压缩http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip来/root/opencv-2.4.9.
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的输出
make并make …
我正在尝试找出从一个分支到另一个分支选择提交子集的最佳方法,同时对我的特定工作流程的历史记录(例如重复提交)的影响最小。这是我的工作流程的描述,以及我尝试使用它的场景。
master:代表当前在生产服务器上的内容。
开发:生产服务器上的代码,加上经过代码审查的最新更改。如果没有任何问题,在下一个生产版本执行时,develop 将合并到 master。
feature-x:新功能的分支,取自开发负责人。Pull-request 用于开发,在通过代码审查时合并。
feature-1:已开发,通过code-review,合并开发。
feature-2:已开发,通过code-review,合并开发。
feature-3:已开发,通过code-review,合并开发。
客户决定功能-2应该没有发布功能1和功能3。 feature-2是一个独立的更改,即它不依赖于feature-1 中引入的任何内容。
我现在需要让feature-2掌握,没有feature-1或feature-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 分支处于活动状态。
任何帮助表示赞赏。