【发布时间】:2018-04-27 17:01:53
【问题描述】:
我想为数据库表添加数据,使用我正在构建的库执行一些操作,最后针对另一个预期值数据集测试这些表。我正在使用 yaml 文件。
到目前为止,我可以使用以下代码来完成这项工作:
/* ... */
public function getDataSet() {
return new \PHPUnit_Extensions_Database_DataSet_YamlDataSet('path/to/yaml/data');
}
/* ... */
public function testFoo() {
// setup state and run operations
// load expected data to test against
$expected = new \PHPUnit_Extensions_Database_DataSet_YamlDataSet('path/to/expected/yaml');
static::assertTablesEqual($expected->getTable('foo'), $this-getConnection()->createDataSet('foo'));
}
我希望能够做到
// fooSeedData.yml
foo:
- id: 1
# ...
// fooExpectedData.yml
foo_test1:
# ...
foo_test2:
# ...
// fooTest.php
public function foo_test1() {
/* ... */
$expected->getTable('foo_test1')
/* ... */
}
public function foo_test2() {
/* ... */
$expected->getTable('foo_test2')
/* ... */
}
但static::assertTablesEqual($expected, $actual); 将表名与数据进行比较。每个测试都需要一个数据集文件。拥有大量数据集文件似乎过多,这让我觉得我做错了什么。
有没有办法做到这一点?我使用 phpunit/dbunit 错了吗?如果是这样,我应该怎么做?任何帮助表示赞赏!
【问题讨论】:
-
不确定我是否理解问题的正确性。但是,如果关注的是多个期望数据集的方便处理,您可能需要考虑将
array datasets用于预期数据,将querying tables 用于实际数据。数组数据集易于创建和维护,因此它们通常非常适合制作每个测试方法的数据集。
标签: php unit-testing phpunit dbunit