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 Laravel Package

enqueue/test

Test utilities for the Enqueue message queue ecosystem. Provides shared helpers and tooling used across Enqueue packages to simplify writing and maintaining tests for messaging components and integrations.

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation:

    composer require enqueue/test --dev
    

    Add to composer.json under require-dev to ensure it's only used in testing environments.

  2. First Use Case: Test a queue consumer or worker by mocking the message broker. Example:

    use Enqueue\Test\Mock\MockConnectionFactory;
    use Enqueue\Test\Mock\MockContext;
    
    $connectionFactory = new MockConnectionFactory();
    $context = new MockContext($connectionFactory);
    
    // Use $context in your queue consumer tests
    
  3. Where to Look First:


Implementation Patterns

Mocking the Queue System

Replace real queue connections with mocks in tests:

// In your test setup
$connectionFactory = new MockConnectionFactory();
$context = new MockContext($connectionFactory);

// In your test
public function testQueueConsumer()
{
    $producer = $context->createProducer();
    $consumer = $context->createConsumer('test_queue');

    // Assertions or interactions can be verified via mock methods
}

Testing Consumers

Verify message handling:

public function testConsumerHandlesMessage()
{
    $consumer = $context->createConsumer('test_queue');
    $message = new \Enqueue\Message\Message('test');

    $consumer->setMessageHandler(function ($message) {
        $this->assertEquals('test', $message->getBody());
    });

    $consumer->consume();
}

Integration with Laravel

Use enqueue/laravel alongside enqueue/test:

// In Laravel test case
protected function getMockContext()
{
    $connectionFactory = new MockConnectionFactory();
    return new MockContext($connectionFactory);
}

Workflow Tips

  1. Isolate Tests: Use mocks to avoid real queue dependencies.
  2. Verify Interactions: Check if messages were produced/consumed correctly.
  3. Cleanup: Reset mocks between tests to avoid state pollution.

Gotchas and Tips

Pitfalls

  1. Stateful Mocks: Mocks retain state between tests. Reset them explicitly:
    $connectionFactory->reset();
    
  2. Thread Safety: Mocks are not thread-safe. Avoid parallel test execution.
  3. Deprecated Methods: Some methods may be outdated (last release in 2018). Check the source for alternatives.

Debugging

  • Verify Mock Setup: Ensure mocks are properly initialized before tests.
  • Check Logs: Enable debug logging for enqueue/test to trace interactions:
    $connectionFactory->setDebug(true);
    
  • Assert Message Flow: Use assertions to validate message production/consumption:
    $this->assertTrue($connectionFactory->isMessageProduced('test_queue'));
    

Extension Points

  1. Custom Mocks: Extend MockConnectionFactory or MockContext for domain-specific behavior.
  2. Intercept Messages: Override mock methods to log or modify messages:
    $connectionFactory->setMessageHandler(function ($message) {
        // Custom logic
    });
    
  3. Simulate Errors: Throw exceptions in mocks to test error handling:
    $connectionFactory->setExceptionOnProduce(true);
    

Configuration Quirks

  • No Default Config: Unlike enqueue/laravel, this package has no config file. All setup is manual.
  • No Laravel Service Provider: Integrate manually in TestCase or CreatesApplication.
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.
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle