如何在 PHPUnit / Laravel 中模拟 JSON 文件

Posted

技术标签:

【中文标题】如何在 PHPUnit / Laravel 中模拟 JSON 文件【英文标题】:How to mock a JSON file in PHPUnit / Laravel 【发布时间】:2018-10-10 10:21:56 【问题描述】:

我创建了一个服务,其中从外部源检索 JSON 并进行查询。我希望能够独立于服务测试使用此服务的功能。如何在 php 单元测试中模拟 JSON 文件以测试这些功能? JSON 文件格式如下:


    "data": [
        
            "title": "Development",
            "children": [
                
                    "title": "Settings",
                    "channel_types": [
                        
                            "title": "Network"
                        
                    ]
                ,
                
                    "title": "Testing",
                    "channel_types": [
                        
                            "title": "Social"
                        
                    ]
                
            ],
            "created_at": 1523464038,
            "updated_at": 1523464038,
            "id": "5ace37664e1d4400a04ffaf2"
        
    ]

【问题讨论】:

【参考方案1】:

您可以将 json 保存为测试文件,即。存储/测试/json/test-data.json

然后在设置测试时检索它:

$path = storage_path("testing/json/test-data.json") ;

$json = file_get_contents($path); 

【讨论】:

以上是关于如何在 PHPUnit / Laravel 中模拟 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel 和 PHPUnit 模拟函数

如何用 phpunit 模拟 Laravel Eloquent 模型?

Laravel / PHPUnit:运行测试时没有模拟类

PhpUnit - 用关系模拟 laravel 模型

用于 PHPunit 的 Laravel 5.4 模型模拟

Laravel PHPUnit 模拟请求