我有一个控制器,经过一些处理后输出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);