在断言中使用输入变量或指定要断言的数据

时间:2017-03-13 11:02:41

标签: phpunit assertions

我对一个将数据(未转换)添加到数据库的函数进行了单元测试。要插入的数据将提供给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']);

2 个答案:

答案 0 :(得分:1)

我认为第一种选择更好。您的输入数据将来可能会发生变化,如果您选择第二个选项,则必须每次都更改断言数据。

第二个选项非常有用,当输出结果相同时,无论输入数据如何。

答案 1 :(得分:0)

我通过电子邮件得到了Adam Wathan的回答。 (我参加了他的测试驱动的laravel课程并注意到他使用'指定'选项)

  

我认为这只是个人偏好,我希望能够在视觉上   浏览并查看“确定此特定字符串出现在输出和   这里输入“,与试图通过存储事物来避免重复   变量。“在我看来,这两种方法都没有错!

所以我无法选择正确的答案。