2017-05-01 36 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(); 
    });