对图像调整大小方法进行单元测试

Unit test an image resize method

我正在尝试使用 Symfony 中的 PHPUnit 来测试 return 调整图像大小的方法。理想情况下,我可以模拟图像对象并设置一些尺寸,然后查看 return.

上的尺寸是否发生变化

代码使用 Imagick 并解码图像,我想知道这是否意味着我将被迫在服务器上保留测试图像以进行单元测试?有没有办法为此目的在代码中模拟图像文件?

    $based = base64_decode($content);

    if($based){
        $content = $based;
    }

    $imagick = new \Imagick();

    $imagick->readImageBlob($content);

如果要将文件存储在服务器上进行测试,我将如何模拟请求对象以包含该文件?

我设法找到了将文件传递给 Imagick 的正确方法。它需要 file_get_contents 包裹在 base64_encode

public function setUp(){
    $imagePath = getcwd()."/src/Woodwork/PartnerBundle/Tests/lin.png";
    $this->image = base64_encode(file_get_contents($imagePath));
    $logger = $this->getMockBuilder('Logger')->setMethods(array('debug', 'info', 'error'))->getMock();
    $this->imagickHelper = new ImagickHelper($logger);
}