gpt4 book ai didi

PHPUnit:assertFileEquals() 失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:46 25 4
gpt4 key购买 nike

我正在开发一个从图像创建缩略图的 PHP 软件。

现在我需要确保缩略图已成功创建,换句话说,初始图像已正确调整大小/裁剪。

我认为只有一种方法可以做到这一点:我手动创建缩略图以与软件创建的缩略图进行比较。

但是如何测试呢?

如果我使用 assertFileEquals() 比较我创建的缩略图和软件创建的缩略图,当然测试失败,即使两个图像相同。

我想如果只是因为两个文件的创建日期不同,或者出于类似的原因,就会发生这种情况。

那么,怎么办呢?

最佳答案

存储一对 source.pngexpected_result.png(由软件生成一次,验证良好并存储为引用图像)就足够了。实现比较功能似乎是一种开销。

单元测试的主要目的是在系统行为发生变化时发出信号,如果新创建的缩略图与引用缩略图不匹配,这就是此类测试要做的事情。

但是,如果无论出于何种原因,软件每次生成的图像都略有不同,那么,如果不是错误,请使用建议的比较相似图像方法。

如果图像内容不同怎么办

对于本例中使用的 PNG 文件,其内容 might contain some auxiliary info such as EXIF .

因此,您可能不得不尝试在没有此附加信息的情况下创建副本图像。请验证以下代码是否适合您:

public function testThumbnails()
{
$this->assertPngImageContentsEquals(__DIR__ . '/test1.png', __DIR__ . '/test2.png');
}

public static function assertPngImageContentsEquals(
$expected,
$actual,
$message = 'Contents of PNG files differ'
)
{
self::assertFileExists($expected, $message);
self::assertFileExists($actual, $message);

$copy_expected = self::_makePngCopy($expected, __DIR__ . '/expected.png');
$copy_actual = self::_makePngCopy($actual, __DIR__ . '/actual.png');

var_dump($copy_expected);
var_dump($copy_actual);

self::assertFileEquals($copy_expected, $copy_actual, 'Thumbnails differ');

unlink($copy_expected);
unlink($copy_actual);
}

private static function _makePngCopy($sourceFile, $resultFile)
{
$image = imagecreatefrompng($sourceFile);
imagepng($image, $resultFile);
imagedestroy($image);
return $resultFile;
}

关于PHPUnit:assertFileEquals() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39895182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com