데이터가있는 데이터베이스 테이블을 시드하고, 구축중인 라이브러리를 사용하여 일부 작업을 수행하고, 마지막으로 예상 값의 다른 데이터 세트에 대해 해당 테이블을 테스트하려고합니다. yaml 파일을 사용하고 있습니다.PHPUnit 데이터베이스 테스팅 : 테스트 당 데이터 세트를 사용하는 방법?
지금까지 나는이이 코드 작업을 얻을 수 있습니다 : 내가 좋아하는 것
/* ... */
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를 잘못 사용하고 있습니까? 그렇다면 어떻게해야합니까? 어떤 도움을 주셔서 감사합니다!
확실하지 않은 문제는 correclty를 이해했습니다. 그러나 관심이 여러 기대 데이터 세트를 편리하게 처리하는 것이라면 [배열 데이터 세트] (https://github.com/sebastianbergmann/dbunit/blob/m aster/src/DataSet/Ar rayDataSet)를 사용하는 것이 좋습니다. .php)를 실제 데이터에 대한 [쿼리 테이블] (https://phpunit.de/manual/current/en/database.html#database.asserting-the-result-of-a-query)과 함께 예상 데이터에 대해 사용합니다. 배열 데이터 세트는 작성하기가 쉽고 유지 보수가 쉽기 때문에 보통 테스트마다 데이터 세트를 만드는 데 완벽하게 맞습니다. – xmike