File upload 如何模拟文件上载或文件对象?

File upload 如何模拟文件上载或文件对象?,file-upload,graphql,jestjs,apollo-server,File Upload,Graphql,Jestjs,Apollo Server,我想用jest模拟文件上传来测试我的apollo服务器,我使用graphql来定义和传递数据。但我发现很难开玩笑地模拟文件对象。我用谷歌搜索,花了很多时间,但还是找不到答案 正如一些人建议的那样,我使用这种方法 但是当我看到后端返回时,它告诉我createreadstream不是一个函数 这是我定义的graphql type Mutation{ changeFlowStatus(flowLog: FlowLogInput!, files: [Upload!], newStatus: Status

我想用jest模拟文件上传来测试我的apollo服务器,我使用graphql来定义和传递数据。但我发现很难开玩笑地模拟文件对象。我用谷歌搜索,花了很多时间,但还是找不到答案

正如一些人建议的那样,我使用这种方法

但是当我看到后端返回时,它告诉我createreadstream不是一个函数

这是我定义的graphql

type Mutation{
changeFlowStatus(flowLog: FlowLogInput!, files: [Upload!], newStatus: Status): FlowLog
}
resolvers{
Upload: GraphQLUpload,
Mutation: {
  changeFlowStatus:
}
这是开玩笑的部分

    //changeFlowStatus
    var size = 1024 * 1024 * 2;
    var mock = new MockFile();
    const file = mock.create("pic.jpg", size, "image/jpeg");
    const changeFlowStatus = await toPromise(
      graphql({
        query: CHANGE_FLOW_STATUS,
        variables: {
          flowLog: { reflowId: reflowId, timestamp: '1562716800', comment: 'flowLog_comment', title: 'flowLog_title' },
          files: [file],
          newStatus: 'SP_RECEIVED',
        },
        context: {
          useMultipart: true,
        },
      }),
    );

file
是我用上面提到的类创建的对象


我的期望很简单,用笑话模拟文件上传过程或文件对象。谢谢。

我想你应该使用
apollographql
graphql upload
jest.js
,下面是一个文件上传的集成测试:

it('应该正确上传文件',异步()=>{
const body=new FormData();
body.append(
"行动",,
JSON.stringify({
查询:`
变异($file:Upload!){
单一上传(文件:$file){
代码
消息
}
}
`,
变量:{
文件:null,
},
}),
);
常量文件名='15625760447371547012340909WX20190108-124331.png';
append('map',JSON.stringify({1:['variables.file']}));
body.append('1',fs.createReadStream(path.resolve(`dirname,`./files/${filename}'));
const json=wait fetch('http://localhost:4000“,{method:'POST',body})。然后((response)=>response.json());
//debug('upload testing#1',{arguments:{json}});
expect(json).toEqual(
expect.objectContaining({
数据:{
单一上传:{
代码:expect.any(数字),
消息:expect.any(字符串),
},
},
}),
);
});