我在laravel中有一个简单的表单,可以将excel转换为csv。提交我的按钮后,将使用给定的请求执行名为 convertToCsv 的功能。最后,文件将在发送后下载并删除:
return response()
->download($destinationFilePath)
->deleteFileAfterSend(true);
这很好用。
现在我想测试我的表单,如果文件已下载并且等于测试csv文件。
为此我用BrowserKitTesting写了一个PHPUnit测试:
/**
* @param $init
* @param $expected
* @dataProvider convert_to_csv
*/
public function testconvert($init, $expected)
{
$inputFile = $init['inputFile'];
if($init['inputFile']) {
$inputFile = base_path($inputFile);
}
$user = $this->auth();
$this->actingAs($user)
->visit($init['url'])
->select($init['inputDelimiter'], 'inputDelimiter')
->select($init['outputDelimiter'], 'outputDelimiter')
->attach($inputFile, 'file');
$this->press($init['sendButton']);
}
public function convert_to_csv()
{
return [
'convert excel to csv' => [
'init' => [
'url' => '/converttocsv',
'inputDelimiter' => ';',
'outputDelimiter' => ';',
'headerAlternative' => false,
'inputFile' => 'path/to/input/file.xlsx',
'sendButton' => 'Convert'
],
'expected' => [
'expectedFile' => 'path/to/expected/file.csv'
]
]
];
}
我不知道在按下功能后如何继续使用下载的文件进行测试。我得到这个错误:
期待DOMNodeList或DOMNode实例,数组,字符串或null,但得到“boolean”。