2017-05-01 40 views
0

我正在寫與chai.request一個通用的測試功能,這裏是我有:chai.request附加文件陣列

//this is in some function 
    var file = fs.readFileSync(__dirname + '/../test/files/' + args.fileName); 
    chai.request(server) 
      .post('/v2') 
      .field('email', args.email) 
      .field('subject', args.subject) 
      .attach('fileName', file, args.fileName) 
      .end((err, res) => { 
       //some test conditions 

       done(); 
      }); 

這個偉大的工程,如果只有1傳遞文件,問題是,有時我需要傳遞一系列文件,但我不知道如何附加這些文件,當我不確定文件的進入數時

PS:某些測試需要有多個文件在同一時間傳入,所以只需循環兩次即可完成整個事件,但我必須以某種方式遍歷.attach部分。

+0

沒有更多的方面,我會建議只是讓你的測試更簡單。對單個文件進行1次測試,然後對另外多個文件進行測試。 – TheDude

+0

我可以做到這一點,但我仍然不知道如何循環訪問並將每個文件附加到第二次測試的請求中。 – Mankind1023

+0

你會知道有多少文件被傳入進行第二次測試,所以你只需要硬編碼它。我敢肯定,有一種方法來推廣它......這只是讓你快速而骯髒。 – TheDude

回答

0

我在爲正在編寫的應用程序編寫測試時遇到了同樣的問題,這是我在問題中發現的唯一問題,也沒有在文檔中找到任何問題。

爲我工作的解決方案是要追加到.n字段名像這樣:

chai.request(server) 
    .post('/v2') 
    .field('email', args.email) 
    .field('subject', args.subject) 
    .attach('fileName.0', file, args.fileName) 
    .attach('fileName.1', file1, args.fileName1) 
    .attach('fileName.2', file2, args.fileName2) 
    .end((err, res) => { 
     //some test conditions 
     done(); 
    });