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