我对一个将数据(未转换)添加到数据库的函数进行了单元测试。要插入的数据将提供给create函数。 我是否在断言中使用输入数据,或者更好地指定我声明的数据?
例如:
$personRequest = [
'name'=>'John',
'age'=>21,
];
$id = savePerson($personRequest);
$personFromDb = getPersonById($id);
$this->assertEquals($personRequest['name'], $personFromDb['name']);
$this->assertEquals($personRequest['age'], $personFromDb['age']);
或者
$id = savePerson([
'name'=>'John',
'age'=>21,
]);
$personFromDb = getPersonById($id);
$this->assertEquals('John', $personFromDb['name']);
$this->assertEquals(21, $personFromDb['age']);
答案 0 :(得分:1)
我认为第一种选择更好。您的输入数据将来可能会发生变化,如果您选择第二个选项,则必须每次都更改断言数据。
第二个选项非常有用,当输出结果相同时,无论输入数据如何。
答案 1 :(得分:0)
我通过电子邮件得到了Adam Wathan的回答。 (我参加了他的测试驱动的laravel课程并注意到他使用'指定'选项)
我认为这只是个人偏好,我希望能够在视觉上 浏览并查看“确定此特定字符串出现在输出和 这里输入“,与试图通过存储事物来避免重复 变量。“在我看来,这两种方法都没有错!
所以我无法选择正确的答案。