Классы системы мокирования
Несколько компонентов в рамках обеспечивают смоделированные версии своих классов, которые могут быть использованы во время тестирования. Эти классы могут заменить обычный класс во время выполнения теста, часто предоставляя дополнительные утверждения для проверки того, что действия произошли (или не произошли) во время выполнения теста. Это может быть проверка правильности кеширования данных, правильности отправки электронных писем и т. д.
Кэш
Вы можете смоделировать кэш с помощью метода mock(), используя CacheFactory в качестве единственного параметра.
$mock = mock(CodeIgniter\Cache\CacheFactory::class);
Хотя это возвращает экземпляр CodeIgniter\Test\Mock\MockCache, который вы можете использовать непосредственно, он также вставляет мок в класс Service, поэтому любые вызовы в вашем коде к service('cache') или Config\Services::cache() будут использовать смоделированный класс вместо него.
При использовании этого в более чем одном методе тестирования в одном файле вы должны вызвать либо метод clean(), либо метод bypass() во время теста setUp(), чтобы обеспечить чистое состояние при запуске тестов.
Дополнительные методы
Вы можете указать смоделированному обработчику кэша никогда не выполнять никакого кеширования с помощью метода bypass(). Это позволит эмулировать использование обработчика-заглушки и гарантирует, что ваш тест не полагается на кэшированные данные для своих тестов.
$mock = mock(CodeIgniter\Cache\CacheFactory::class); // Never cache any items during this test. $mock->bypass();
Доступные утверждения
Следующие новые утверждения доступны для смоделированного класса для использования во время тестирования:
$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);
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/testing/mocking.html