2016-12-19 5 views
0

express.js私はファイルを受信し処理するためにうまく動作するポスト機能を持っています。Request.jsファイルのアップロードをシミュレートする(マルチパート/フォームデータ)

私はfs & requestを使用して同じことをシミュレートしjasmineユニットテストを書くことをしようとしています。

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エラーが出るが、私は私のアプリで次のアップロードのビューを使用する場合、それは正常に動作します:

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

は、私は、ファイルを読んでいるという事実に関連したこの問題ですutf8、または他の何か?

答えて

1

あなたのフォームでは/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() 
}); 
+0

感謝しますが、これはちょうどnginxのルーティングに関係している、エンドポイントは正しいように思えます。あなたが投稿したものでは、私は500の代わりに404を得ます。 –

+0

Ok - URLを元に戻して、私が提案したコードの変更を試してみてください。 – duncanhall

+0

申し訳ありませんが、他の提案があったことに気付かなかった。 –

関連する問題