shouldReceive('getCache') ->andReturn($moduleCache = Mockery::mock(CacheInterface::class)); $moduleManager = Mockery::mock(ModuleManager::class); $moduleManager->shouldReceive('getModule') ->with('vendor-test_module') ->andReturn($module); $this->app->instance(ModuleManager::class, $moduleManager); $provider = new TestBaseModuleServiceProviderFixture($this->app, 'vendor-test_module'); $provider->setCacheServices([FixtureCacheConsumer::class]); $provider->register(); $consumer = $this->app->make(FixtureCacheConsumer::class); $this->assertSame($moduleCache, $consumer->cache); } public function test_register_does_not_rebind_global_cache_interface(): void { $globalCache = Mockery::mock(CacheInterface::class); $this->app->instance(CacheInterface::class, $globalCache); $module = Mockery::mock(ModuleInterface::class); $module->shouldReceive('getCache')->andReturn(Mockery::mock(CacheInterface::class)); $moduleManager = Mockery::mock(ModuleManager::class); $moduleManager->shouldReceive('getModule')->andReturn($module); $this->app->instance(ModuleManager::class, $moduleManager); $provider = new TestBaseModuleServiceProviderFixture($this->app, 'vendor-test_module'); $provider->setCacheServices([FixtureCacheConsumer::class]); $provider->register(); $this->assertSame($globalCache, $this->app->make(CacheInterface::class)); } protected function tearDown(): void { Mockery::close(); parent::tearDown(); } } class TestBaseModuleServiceProviderFixture extends BaseModuleServiceProvider { public function __construct($app, string $identifier) { parent::__construct($app); $this->moduleIdentifier = $identifier; } public function setCacheServices(array $services): void { $this->cacheServices = $services; } }