私はCakePHPのインポート/エクスポートデータベース用のプラグインを作成しています。このプラグインは、シェルを有し、そのindex()
方法は、すでにエクスポートされたデータベースをリスト:なしデータベースとCakePHP:シェル上のテーブルの書き込みテスト
public function index()
{
//Gets alla files
$files = BackupManager::index();
$this->out(__d('mysql_backup', 'Backup files found: {0}', count($files)));
if (!empty($files)) {
//Parses files
$files = array_map(function ($file) {
if (isset($file->compression) && !$file->compression) {
$file->compression = __d('mysql_backup', 'none');
}
$file->size = Number::toReadableSize($file->size);
return array_values((array)$file);
}, $files);
//Table headers
$headers = [
__d('mysql_backup', 'Filename'),
__d('mysql_backup', 'Extension'),
__d('mysql_backup', 'Compression'),
__d('mysql_backup', 'Size'),
__d('mysql_backup', 'Datetime'),
];
$this->helper('table')->output(array_merge([$headers], $files));
}
}
出力:
$ bin/cake backup
Welcome to CakePHP v3.3.8 Console
---------------------------------------------------------------
App : src
Path: /home/mirko/Server/mirkopagliai/src/
PHP : 7.0.12-1
---------------------------------------------------------------
Backup files found: 0
いくつかのデータベースを持つ出力:
$ bin/cake backup
Welcome to CakePHP v3.3.8 Console
---------------------------------------------------------------
App : src
Path: /home/mirko/Server/mirkopagliai/src/
PHP : 7.0.12-1
---------------------------------------------------------------
Backup files found: 2
+-------------------------------------------+-----------+-------------+-----------+-----------------+
| Filename | Extension | Compression | Size | Datetime |
+-------------------------------------------+-----------+-------------+-----------+-----------------+
| backup_mirkopagliai_20161113110419.sql.gz | sql.gz | gzip | 51,05 KB | 13/11/16, 11:04 |
| backup_mirkopagliai_20161113110414.sql | sql | none | 150,93 KB | 13/11/16, 11:04 |
+-------------------------------------------+-----------+-------------+-----------+-----------------+
を今私がする必要がありますいくつかのテストを書く。
はノーデータベース・コードのためのテストを書いた:
public function testIndexNoBackups()
{
$this->io->expects($this->once())
->method('out')
->with('Backup files found: 0', 1);
$this->BackupShell->index();
}
私の問題は、テーブル出力するかどうか(第2例)のテストを記述することです。今の
は、私はこれだけを書いた:
public function testIndex()
{
//Creates a database
(new BackupExport())->export();
$this->io->expects($this->once())
->method('out')
->with('Backup files found: 1', 1);
$this->BackupShell->index();
}
出力:
$ phpunit tests/TestCase/Shell/BackupShellTest.php --filter testIndex
PHPUnit 5.4.6 by Sebastian Bergmann and contributors.
E. 2/2 (100%)
Time: 114 ms, Memory: 6.00MB
There was 1 error:
1) MysqlBackup\Test\TestCase\Shell\BackupShellTest::testIndex
Error: Call to a member function output() on null
/home/mirko/Libs/Plugins/cakephp-mysql-backup/src/Shell/BackupShell.php:110
/home/mirko/Libs/Plugins/cakephp-mysql-backup/tests/TestCase/Shell/BackupShellTest.php:191
ERRORS!
Tests: 2, Assertions: 1, Errors: 1.
だから、どのようにテーブルの出力を検査するためのテストを書くには?例はどこにありますか?
常に(わずか4時間後に、あなたのリンクはすでに古くなっている)問題に関連するすべてのコードが含まれ、あなたのコードにリンクしないでください! – ndm
ありがとう@ndm最初の投稿は固定 –