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

Phpunit 在断言中使用输入变量或指定要断言的数据,phpunit,assertions,Phpunit,Assertions,我对一个函数进行了单元测试,该函数将未转换的数据添加到数据库中。要插入的数据被提供给create函数。 我是在断言中使用输入数据,还是最好指定我正在断言的数据 例如: $personRequest = [ 'name'=>'John', 'age'=>21, ]; $id = savePerson($personRequest); $personFromDb = getPersonById($id); $this->assertEquals($personR

我对一个函数进行了单元测试,该函数将未转换的数据添加到数据库中。要插入的数据被提供给create函数。 我是在断言中使用输入数据,还是最好指定我正在断言的数据

例如:

$personRequest = [
    'name'=>'John',
    'age'=>21,
];

$id = savePerson($personRequest);

$personFromDb = getPersonById($id);
$this->assertEquals($personRequest['name'], $personFromDb['name']);
$this->assertEquals($personRequest['age'], $personFromDb['age']);


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


第二个选项是有用的,当您的输出将是相同的,无论您的输入数据

我通过电子邮件从亚当·沃特汉那里得到了答案。我参加了他的测试驱动laravel课程,注意到他使用了“指定”选项

我想这只是我个人的喜好,我喜欢在视觉上 略读并查看ok。此特定字符串显示在输出和 这里是输入,而不是试图通过存储来避免重复 在变量中。在我看来,这两种方法都没有错

所以我不能选择正确的答案

$id = savePerson([
    'name'=>'John',
    'age'=>21,
]);

$personFromDb = getPersonById($id);
$this->assertEquals('John', $personFromDb['name']);
$this->assertEquals(21, $personFromDb['age']);