如何在Laravel灯塔中使用其他参数测试graphql上传突变

时间:2020-09-10 08:36:46

标签: laravel phpunit laravel-lighthouse

正如标题所述,我希望能够使用可用的标量测试文件的上传,同时还为同一突变提供其他参数。该文档为如何测试此Lighthouse docs simulating file uploads提供了帮助。但是我的突变还需要一些其他动态参数来进行测试。但是我不知道如何提供这些附加参数。我当前的设置示例:

$response = $this->multipartGraphQL(['operations' => {
   "query": "mutation ($file: Upload!) {registerUser(email: $email, files: [$file]) {courseRegistrationFiles{id}}}",
   "variables": {"file": null}
}', 'map' => '{"0": ["variables.file"]}'], [
   '0' => UploadedFile::fake()->create('document.pdf', 100)
]);

$ email的一些附加说明应使用伪造的电子邮件地址表示,此操作在此代码段的上方行中进行。最初,我想像我必须在与定义uploadeFile :: fake()的位置相同的括号中提供email变量,但这会导致错误,指出该方法的此部分中的参数应为{ {1}}。之后,我还尝试将它们简单地添加到map / variables部分,但这导致参数为null。

1 个答案:

答案 0 :(得分:1)

现在有点不同,您需要 3 个数组参数,例如:

$operations = [
    'operationName' => 'upload',
    'query' => 'mutation upload ($file: Upload!) {
                    upload (file: $file)
                }',
    'variables' => [
        'file' => null,
    ],
];

$map = [
    '0' => ['variables.file'],
];

$file = [
    '0' => UploadedFile::fake()->create('test.pdf', 500),
];

$this->multipartGraphQL($operations, $map, $file);

以下文档可以帮助您:https://lighthouse-php.com/5.2/testing/phpunit.html#simulating-file-uploads