You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel 8中模拟按需创建的存储磁盘

针对Laravel按需存储磁盘的测试Fake方案
  • 方案1:给按需磁盘指定固定名称(推荐,对业务代码侵入极小)
    你可以在业务代码创建按需磁盘时,给Storage::build()方法传入第三个参数作为该磁盘的自定义名称,业务代码示例:
    // $config 为从数据库读取的存储配置数组
    $disk = Storage::build($config, [], 'dynamic_custom_disk');
    
    测试时直接fake对应的自定义名称即可,和常规命名磁盘的用法完全一致:
    Storage::fake('dynamic_custom_disk');
    
    // 执行业务代码后可直接调用断言方法
    Storage::disk('dynamic_custom_disk')->assertExists('要验证的文件路径');
    
  • 方案2:无需修改业务代码,Mock build 方法返回Fake实例
    如果不想改动业务代码添加磁盘名,可以在测试中拦截Storage facade的build方法调用,直接返回fake的磁盘实例:
    // 先创建一个临时fake磁盘
    $fakeDisk = Storage::fake('temp_dynamic_disk');
    // 拦截所有build方法调用,直接返回上面的fake实例
    Storage::shouldReceive('build')
        ->andReturn($fakeDisk);
    
    // 执行业务代码后,直接用$fakeDisk做断言
    $fakeDisk->assertExists('要验证的文件路径');
    

如果需要区分多个不同配置的按需磁盘,也可以给shouldReceive添加参数匹配规则,根据传入的配置返回对应的fake实例即可。

内容的提问来源于stack exchange,提问作者tuscan88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:12:02