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

问题描述

正如标题所述,我希望能够使用可用的标量测试文件的上传,同时还为同一突变提供其他参数。该文档为如何测试此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。

解决方法

现在有点不同,您需要 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...