Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Test Support Laravel Package

yiisoft/test-support

Testing utilities for Yii applications: helpers and fixtures to simplify unit and integration tests, isolate dependencies, and improve readability. Provides common test tools you can reuse across packages and projects.

View on GitHub
Deep Wiki
Context7

Test Support

Alguns componentes da base de código do aplicativo dependem de serviços que implementam interfaces PSR. Para testar esses componentes, o desenvolvedor geralmente precisa escrever suas próprias versões específicas de testes de implementação PSR semelhantes. O pacote Test Support fornece implementações prontas para uso de algumas interfaces PSR, destinadas exclusivamente a ajudar a testar seu código.

Interface do Logger PSR-3

O pacote fornece a classe SimpleLogger, que é uma implementação de LoggerInterface.

A instância SimpleLogger armazena todas as mensagens registradas em um array, que é destruído junto com a própria instância. Para obter todas as mensagens registradas, use o método getMessages().

$logger = new Yiisoft\Test\Support\Log\SimpleLogger();

$logger->emergency('Emergency message', ['key' => 'value']);
$logger->alert('Alert message', ['key' => 'value']);
$logger->critical('Critical message', ['key' => 'value']);
$logger->error('Error message', ['key' => 'value']);
$logger->warning('Warning message', ['key' => 'value']);
$logger->notice('Notice message', ['key' => 'value']);
$logger->info('Info message', ['key' => 'value']);
$logger->debug('Debug message', ['key' => 'value']);

$messages = $logger->getMessages();
/*
[
    ...
    ['level' => 'error', 'message' => 'Error message', 'context' => ['key' => 'value']];
    ['level' => 'warning', 'message' => 'Warning message', 'context' => ['key' => 'value']];
    ...
];
*/

Interface do contêiner PSR-11

O SimpleContainer é um contêiner de dependência simples que aceita a configuração das definições como argumento do construtor. Apesar da simplicidade, o container é flexível: o 2º parâmetro do construtor aceita um Closure. Este Closure será chamado para obter o valor "default" se o valor solicitado não for encontrado se a configuração:

use Yiisoft\Test\Support\Container\SimpleContainer;

$container = new SimpleContainer(
    ['foo' => 'Foo'],
    fn (string $id) => $id === 'bar' ? 'Bar' : 'Not found'
);
$foo = $container->get('foo'); // Foo
$foo = $container->get('bar'); // Bar
$baz = $container->get('baz'); // Not found

Dispatcher de eventos PSR-14

O SimpleEventDispatcher é um dispatcher de eventos específico de teste. Você pode passar qualquer número de closure-listeners para seu construtor. SimpleEventDispatcher não contém nenhuma lógica complexa para combinar um evento com um listener. Cada listener deve decidir por si mesmo se processa um evento ou não. O dispatcher é compatível com PSR e funciona com StoppableEventInterface.

Você pode testar eventos enviados para SimpleEventDispatcher usando os seguintes métodos:

  • isObjectTriggered::isObjectTriggered(object $event, int $times = null) — O objeto $event exato foi acionado.
  • isClassTriggered::isClassTriggered(string $class, int $times = null) — Evento da classe $class foi acionado.
  • isInstanceOfTriggered::isInstanceOfTriggered(string $class, int $times = null) — Evento com interface $class foi acionado.

O 2º parâmetro $times, é responsável por verificar quantas vezes o evento foi chamado.

Cache Simples PSR-16

A interface SimpleCacheInterface é implementada por duas classes:

  1. MemorySimpleCache, que funciona de forma semelhante a ArrayCache de um pacote yiisoft/cache, e

  2. SimpleCacheActionLogger. Ele armazena todos os comandos enviados para SimpleCacheInterface.

MemorySimpleCache

A classe MemorySimpleCache não usa armazenamento externo para armazenar valores em cache. Os valores são armazenados na propriedade array do próprio objeto e serão destruídos junto com o objeto. Use MemorySimpleCache nos casos simples quando você não precisa acompanhar o histórico de acesso ao cache.

Você pode simular erros de cache definindo as propriedades públicas returnOnSet, returnOnDelete e returnOnClear. Estes definem valores retornados pelos métodos correspondentes do SimpleCacheInterface.

SimpleCacheActionLogger

A classe SimpleCacheActionLogger é um decorator para SimpleCacheInterface. Ele lembra todas as chamadas de cache, mesmo que sejam inválidas, como quando a chave contém caracteres inválidos ou não é uma string.

Use o decorator quando não for suficiente testar o estado do cache antes e depois da execução do código. Por exemplo, quando o serviço de teste deve reenviar o valor para o cache após a primeira tentativa fracassada.

use Yiisoft\Test\Support\SimpleCache;

$cache = new SimpleCache\MemorySimpleCache();
//MemorySimpleCache::set() method will return false, which is an error according to PSR
$cache->returnOnSet = false;

$cacheLogger = new SimpleCache\SimpleCacheActionLogger($cache);
$myService = new myService(/* CacheInterface */ $cacheLogger);

$myService->trySetAction('key', 'value'); // Service tries to cache value 3 times

\PHPUnit\Framework\TestCase::assertSame([
    [SimpleCache\Action::SET, 'key'],
    [SimpleCache\Action::SET, 'key'],
    [SimpleCache\Action::SET, 'key'],
], $cacheLogger->getActionKeyList()); // true. Logger registers 3 tries to set cache
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport