Laravel BrowserKitTesting测试表单提交后是否下载了文件

时间:2017-11-03 11:09:04

标签: php laravel phpunit integration-testing

我在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”。

0 个答案:

没有答案