javascript - Request.js 模拟文件上传(multipart/form-data)

标签 javascript node.js jasmine http-post httprequest

我有一个 express.js post 函数,可以很好地接收和处理文件。

我正在尝试编写一个 jasmine 单元测试,它使用 fsrequest 模拟相同的事情。

const request = require("request")
const fs = require("fs")
const app = require("../app.js")
const base_url = "http://localhost:3002/"

var wordFile = fs.readFileSync(__dirname + '/test.docx', 'utf8')

describe("POST a word file to /word", function() {
  it("parses the word file, and returns an array of components", function(done) {
    request({
      url: base_url + "word",
      method: "POST",
      json: true,
      headers: {
        "content-type": "multipart/form-data",
      },
      body: wordFile
    }, function (error, response, body) {
         expect(response.statusCode).toBe(200)
         done()
       }
    )
  })
})

我收到 500 错误,但当我在应用程序上使用以下上传 View 时,它工作正常:

<form action="/mediaDev/word" method="post" enctype="multipart/form-data">
    <input type="file" name='doc' placeholder="Select file"/>
    <br/>
    <button>Upload</button>
</form>

此问题是否与我将文件读取为 utf8 或其他原因有关?

最佳答案

在您的表单中,您将发布到 /mediaDev/word,而在测试中,您将发布到 /word。检查这是否正确。

您也没有关注 request.js documented examples for sending multipart form data ,对于您的情况,它看起来像这样:

var formData = {
  doc: fs.createReadStream(__dirname + '/test.docx', {encoding:'utf8'})
}

request.post({url: base_url + "word", formData: formData}, function(error, repsonse, body) {
  expect(response.statusCode).toBe(200)
  done()
});

关于javascript - Request.js 模拟文件上传(multipart/form-data),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41224122/

相关文章:

javascript - Express.js 应用程序错误导致 Route.post() 需要回调函数但出现 [object Undefined] 错误

Node.js 集群 - 每个核心 1 个工作线程会减慢主线程速度?

node.js - PM2 重建应用程序时显示旧版本

unit-testing - Angular 服务测试有什么问题?

javascript - 内容隐藏/显示

javascript - 无法让一名球员成为二号球员

node.js - 使用 join-monster 库 (GraphQL) 对根查询字段进行分页

node.js - 如何将 jasmine 与服务器端 typescript 项目一起使用?

Angular 9 "Error: This constructor was not compatible with Dependency Injection."

javascript - 我们可以将类保存在变量中并将目标元素与该变量一起保存吗?