在ember cli中上传文件的验收测试

时间:2015-03-18 11:26:56

标签: ember.js integration-testing ember-cli qunit ember-qunit

我想在上传文件的ember中创建基本验收测试。 我可以使用Pretender模拟服务器,但我需要知道如何使用文件系统中的文件填充input type="file"字段。所以问题基本上是:

  1. 如何使用ember测试助手填充输入文件字段,是否使用fillIn帮助程序?
  2. 如何将样本文件添加到文件夹并从验收测试中获取它们。是否有可能从验收测试中获取我的Ember项目的当前路径,以从要上载的文件系统中选择文件?在Rails中,我们使用Rails.root来实现此目的。

2 个答案:

答案 0 :(得分:6)

我解决了它的不同之处:我没有从文件系统上传文件,而是手动创建一个Blob并在输入元素上使用triggerHandler:

let inputElement = $('input[type=file]');

let blob = new Blob(['foo', 'bar'], {type: 'text/plain'});
blob.name = 'foobar.txt';
inputElement.triggerHandler({
  type: 'change',
  target: {
    files: {
      0: blob,
      length: 1,
      item() { return blob; }
    }
  }
});

这会触发上传。

答案 1 :(得分:0)

您无法使用fillIn之类的内容来设置文件字段,并准备上传文件值,因为浏览器不会让您:

How to set a value to a file input in HTML?

我认为唯一可行的方法是使用xhr下载服务器上存在的文件,然后使用xhr上传它。在没有引入我链接的SO问题中解释的安全问题的情况下,我无法想到以任何方式编程设置文件输入字段的值。

在您通过http url下载后,您需要测试上传的演示文件,这是开始的地方:https://developer.mozilla.org/en-US/docs/Web/API/FileReader