我有一个控制器在经过一些处理后输出一个CSV文件:
有些记录来自MySQL表,然后进行处理(一些清理和聚合),然后转换为CSV文件。
用这样的东西测试是否正确:
$this->assertSame(file_get_contents('myCsv.csv'), $expectedString);
虽然有效但我多次修改$expectedString
,有时甚至在更改特定标签名称后也是如此。
答案 0 :(得分:1)
单元测试的整个想法是拥有预定义的值并定义处理后应该返回的方法。
这是有道理的:
$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);