2016-03-23 70 views
2

上傳我有一個端點後,它使用multer並採取文件的數組:測試快遞multer文件陣列Supertest

router.post('/api/projects/:id/sessions', upload.array('files', 4), function(req, res, next) { 
    ... 
} 

在測試中,我需要發送的4個文件的數組,我不能弄清楚如何用超級特技做到這一點。下面是使用的方法我unworking測試,我看到其他地方的建議:

it('Add a session', function(done) { 
     api.post('/api/projects/' + projectId + '/sessions') 
      .set('X-Auth', tokenA) 
      .attach('files[0]', './test/files/d.zip') 
      .attach('files[1]', './test/files/m.csv') 
      .attach('files[2]', './test/files/o.15o.txt') 
      .attach('files[3]', './test/files/e.n') 
      .end(function(err, res) { 
       expect(res.status).to.equal(201) 
       done(err) 
      }) 
    }) 

這將返回一個相當長的錯誤:

Error: Unexpected field 
at makeError (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/lib/make-error.js:12:13) 
at wrappedFileFilter (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/index.js:39:19) 
at Busboy.<anonymous> (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/lib/make-middleware.js:112:7) 
at emitMany (events.js:108:13) 
at Busboy.emit (events.js:182:7) 
at Busboy.emit (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/lib/main.js:31:35) 
at PartStream.<anonymous> (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/lib/types/multipart.js:208:13) 
at emitOne (events.js:77:13) 
at PartStream.emit (events.js:169:7) 
at HeaderParser.<anonymous> (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/node_modules/dicer/lib/Dicer.js:51:16) 
at emitOne (events.js:77:13) 
at HeaderParser.emit (events.js:169:7) 
at HeaderParser._finish (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/node_modules/dicer/lib/HeaderParser.js:68:8) 
at SBMH.<anonymous> (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/node_modules/dicer/lib/HeaderParser.js:40:12) 
at emitMany (events.js:108:13) 
at SBMH.emit (events.js:182:7) 
at SBMH._sbmh_feed (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/node_modules/dicer/node_modules/streamsearch/lib/sbmh.js:159:14) 
at SBMH.push (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/node_modules/dicer/node_modules/streamsearch/lib/sbmh.js:56:14) 
at HeaderParser.push (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/node_modules/dicer/lib/HeaderParser.js:46:19) 
at Dicer._oninfo (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/node_modules/dicer/lib/Dicer.js:197:25) 
at SBMH.<anonymous> (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/node_modules/dicer/lib/Dicer.js:127:10) 
at emitMany (events.js:108:13) 
at SBMH.emit (events.js:182:7) 
at SBMH._sbmh_feed (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/node_modules/dicer/node_modules/streamsearch/lib/sbmh.js:188:10) 
at SBMH.push (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/node_modules/dicer/node_modules/streamsearch/lib/sbmh.js:56:14) 
at Dicer._write (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/node_modules/dicer/lib/Dicer.js:109:17) 
at doWrite (_stream_writable.js:292:12) 
at writeOrBuffer (_stream_writable.js:278:5) 
at Dicer.Writable.write (_stream_writable.js:207:11) 
at Multipart.write (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/lib/types/multipart.js:285:24) 
at Busboy._write (/Users/Oscar/Google Drive/CompSci/COMPSCI-YEAR4/FinalProject/gpsapp/node_modules/multer/node_modules/busboy/lib/main.js:74:16) 
at doWrite (_stream_writable.js:292:12) 
at writeOrBuffer (_stream_writable.js:278:5) 
at Busboy.Writable.write (_stream_writable.js:207:11) 
at IncomingMessage.ondata (_stream_readable.js:528:20) 
at emitOne (events.js:77:13) 
at IncomingMessage.emit (events.js:169:7) 
at IncomingMessage.Readable.read (_stream_readable.js:360:10) 
at flow (_stream_readable.js:743:26) 
at resume_ (_stream_readable.js:723:3) 
at doNTCallback2 (node.js:439:9) 
at process._tickCallback (node.js:353:17) 

誰能幫我寫一個工作測試這個職位終點?謝謝。

回答

2

因此,原來如果你只是attach文件相同的名字,他們會被附加到一個數組中,並作爲這樣的,所以下面的測試工作得很好:

it('Add a session', function(done) { 
    api.post('/api/projects/' + projectId + '/sessions') 
     .set('X-Auth', tokenA) 
     .attach('files', './test/files/d.zip') 
     .attach('files', './test/files/m.csv') 
     .attach('files', './test/files/o.15o.txt') 
     .attach('files', './test/files/e.n') 
     .end(function(err, res) { 
      expect(res.status).to.equal(201) 
      done(err) 
     }) 
})