システムクラスのモッキング

フレームワーク内のいくつかのコンポーネントは、テスト中に使用できるクラスのモックバージョンを提供しています。 これらのクラスは、テスト実行中に通常のクラスの代わりに使用でき、多くの場合、テストの実行中にアクションが実行された(または実行されなかった)ことをテストするための追加のアサーションを提供します。 これには、データが正しくキャッシュされているか、メールが正しく送信されたかなどをチェックすることが含まれます。

キャッシュ

CacheFactory を唯一のパラメーターとして使用して、mock() メソッドでキャッシュをモックできます。

<?php

$mock = mock(\CodeIgniter\Cache\CacheFactory::class);

これは、直接使用できる CodeIgniter\Test\Mock\MockCache のインスタンスを返しますが、モックをサービス クラスにも挿入するため、コード内で service('cache') または Config\Services::cache() を呼び出すと、モックされたクラスが使用されます。その場所にあります。

これを単一ファイル内の複数のテストメソッドで使用する場合は、テストの setUp() 中に clean() または bypass() メソッドを呼び出して、テストの実行時にクリーンな状態を確保する必要があります。

追加メソッド

bypass() メソッドを使用して、モックされたキャッシュハンドラーにキャッシュを実行しないように指示できます。 これにより、ダミーハンドラーの使用がエミュレートされ、テストがテストのキャッシュデータに依存しないようになります。

<?php

$mock = mock(\CodeIgniter\Cache\CacheFactory::class);
// Never cache any items during this test.
$mock->bypass();

利用可能なアサーション

テスト中に使用するために、モックされたクラスで次の新しいアサーションが利用可能です

<?php

$mock = mock(\CodeIgniter\Cache\CacheFactory::class);

// Assert that a cached item named $key exists
$mock->assertHas($key);
// Assert that a cached item named $key exists with a value of $value
$mock->assertHasValue($key, $value);
// Assert that a cached item named $key does NOT exist
$mock->assertMissing($key);