问题描述
我要存档的内容:
我要测试的控制器做什么:
它接受测试记录的上载以将其存储到数据库中。每个记录由两个具有相同文件名的文件(xml,yml)组成。这两个文件都必须读取并存储在数据库中。上传的文件永远不会存储在服务器上,它们是直接的进程。
我要测试的内容:
我当前的问题是什么?
我想为xml和yml文件使用模板,并使用Faker
为本测试生成假数据。原因:为什么不呢?我对测试的理解是,您应该测试尽可能多的案例,并且如果静态数据足够,为什么我们要在数据库的单元测试中使用Faker
和Factory
等等?
当我查看Laravel: Testing File Uploads时,他们会在其中生成UploadedFile::fake()
的测试文件。我对这些文件的理解是,它们是空的,您不能使用模板或类似的东西来填充有用的数据。我发现大多数解决方案只是将真实文件保留在他们的项目中。 Like this.
我可以使用blade
,如图here所示,但是我不确定是否应该像这样滥用 blade
。
我可以使用Yaml
和XMLReader
/ XMLWriter
来完全生成xml和yml文件,但是这些文件中有很多静态文本,我只需要将数据填充到一些具体点。
问题:
- 那么创建这种假文件的最佳方法是什么?我应该使用
blade
还是twig
还是其他模板引擎?一个小的解决方案将不胜感激。 - 还是我应该自己生成完整文件,为什么这样更好?
- 或者生成假数据没有意义,我应该改用静态数据吗?
这是我当前的测试功能:
public function testFullRecordUpload() {
// Generate record files to upload
// Todo Use template files with faker,or something like that
$xml_file = UploadedFile::fake()->create('test_file.xml',$sizeInKilobytes = 566);
$yml_file = UploadedFile::fake()->create('test_file.yml',$sizeInKilobytes = 20);
// Send Files
$response = $this->json('POST','/upload',[
'xml' => $xml_file,'yml' => $yml_file
]);
// Check response
$response->assertOk();
// Check if the uploaded data is available over API
// Todo
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)