如何对生成的文件(PHP、Symfony)进行功能测试


How to functionally tests a generated file (PHP, Symfony)

我有一个控制器,经过一些处理后输出CSV文件:

从MySQL表中取出一些记录,然后处理(一些清理和聚合),然后转换为CSV文件。

这样测试是否正确:

$this->assertSame(file_get_contents('myCsv.csv'), $expectedString);

它工作,但我修改了很多次$expectedString,有时甚至在改变特定的标签名称后。

单元测试的整个思想是有一个预定义的值,并定义方法在处理后应该返回什么。

有意义:

$n = add(1, 1);
$this->assertEquals(2, $n);

$rand = generateRandomNumber();
$this->assertIsRandom($rand); // What does this even mean?

这意味着您的测试需要有一个对每个测试都相同的.cvs -文件,并且每次来自数据库的数据都是相同的。如果你有这个,你可以计算出预期的结果应该是什么。如果在测试之外存在任何可能变化的变量,则不可能进行可靠的测试。

更好的方法是将测试分成多个较小的模块。测试对最终内容进行处理、清洗和聚合的过程。这很容易测试。例如:

$str = removeUpperCase('abCDe');
$this->assertEquals('abe', $str);