17

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

  1. 如何用 ember 测试助手填充输入文件字段,我是否使用fillIn助手?
  2. 如何将示例文件添加到文件夹并从我的验收测试中获取它们。是否可以从验收测试中获取我的 Ember 项目的当前路径以从文件系统中选择要上传的文件?在 Rails 中,我们Rails.root用于此目的。
4

2 回答 2

6

I solved it differently: I don't upload a file from the file system, but create a Blob manually and use triggerHandler on the input element:

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; }
    }
  }
});

This triggers the upload.

于 2016-06-10T12:33:16.240 回答
0

您不能使用任何东西fillIn来设置文件字段,其中包含准备上传的文件值,因为浏览器不允许您:

如何为 HTML 中的文件输入设置值?

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

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

于 2015-10-10T19:03:20.420 回答