我有一个 express.js
post 函数,可以很好地接收和处理文件。
我正在尝试编写一个 jasmine
单元测试,它使用 fs
和 request
模拟相同的事情。
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/