bendamqui / dbunit-table
v2.1.2
2020-01-07 22:11 UTC
Requires
- php: >=7.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.15@dev
- phpunit/phpunit: ^7.5
- victorjonsson/markdowndocs: dev-master
This package is auto-updated.
Last update: 2020-03-26 23:41:35 UTC
README
描述
在使用DbUnit时,一个挑战是编写在数据集修改后仍然有效的测试。随着应用程序的增长,新的测试可能需要修改数据集。直接从测试中访问数据集通常是解决问题的好方法。
此外观允许这样做,而无需查询数据库以避免减慢测试速度。它简单地接收一个PHPUnit\DbUnit\DataSet\ITable
实例,这是DbUnit存储用于在每次测试之前填充数据库的数据集的地方。然后它提供允许更精确访问数据的方法,以便使测试代码更简洁。
安装
composer require bendamqui/dbunit-table
基本设置示例
use PHPUnit\Framework\TestCase; use Bendamqui\DbUnit\FixtureUtil; class DbUnitUsersTest extends TestCase { /** * @var FixtureUtil */ private $users_table; /** * @var array */ private $data = []; /** * @var YourApp */ private $app; public function setUp() { parent::setUp(); $this->users_table = new FixtureUtil($this->data); } }
示例
以下是一些基本示例,说明如何利用外观编写在数据集更改时仍然有效的测试,同时保持代码清洁并避免不必要的数据库调用。
public function testGetAllUsers() { $expected = $this->users_table->getRowCount(); $response = $this->app->get('users'); $this->assertCount($expected, $response); }
public function testPendingUserCannotLogIn() { $pending_users = $this->users_table->getWhere(['status' => 'pending']); foreach ($pending_users as $user) { $response = $this->app->post('login', ['email' => $user['email'], 'pass' => $user['pass']]); $this->assertEquals(401, $response->getCode(), 'Pending user should not be able to log in.'); } $this->assertGreaterThan(0, count($pending_users)); }
public function testCannotUpdateUserWithAnInvalidEmail() { // Get a valid payload to update a user and override the email field. $payload = $this->users_table->get(['email' => 'invalid_email']); $response = $this->app->put('user', $payload); $this->assertEquals(422, $response->getCode(), 'User update with invalid email should receive a bad request response'); }
API
可见性 | 功能 |
---|---|
public | get(array $override=array(), int $row=0) : array 获取一行。 |
public | getAll(array $override=array()) : array 获取所有行。 |
public | getAllRaw() : array 以原始格式获取所有行(跳过后处理)。 |
public | getByPrimaryKey(mixed $id, array/mixed $override=array()) : array 通过主键获取一行 |
public | getRaw(int $row=0) : array 通过行号获取一行(跳过后处理)。 |
public | getRowCount() : int 获取表中的行数 |
public | getValue(mixed $column, int $row=0) : mixed 获取表中的给定行/列的值。 |
public | getWhere(array $filters=array()) : array 使用键值形式使用过滤器获取多行。仅执行AND。 |
public | setHidden(array $hidden) : void 设置在获取行时不应返回的列列表 |
public | setPrimaryKey(string $primary_key) : void 设置表的键。默认为'id'。 |