在尝试测试html File对象时,它不会让我用样本图像预先填充它吗?

时间:2017-12-27 16:27:35

标签: testing dart angular-dart dart-html

我创建的组件我想用Angular Dart的框架进行测试。

当我创建测试文件时,似乎我在创建要测试的示例文件时遇到问题。

在我的结构中,我有:

./bird.jpg
./image_uploader_po.dart
./image_uploaders_test.dart

然后在我的代码中

test("testing against valid image upload", () async {
  File testImage = new File("./bird.jpg");  //improper constructor.
  fixture.update((Component com){
    com.imageFile = testImage;
  });
  uploaderPO = await fixture.resolvePageObject(Component);
});

我遇到的问题是,这不是File的 dart / io 实现,而是Html实现。

我试图确定最佳操作方法是什么,打开一个文件以进行读访问以应用于Component的File实现。

我正在寻找文件阅读器,但这与存在的文件有关,这就是我遇到的问题。

现在,File构造函数是:File(List<Object> fileBits, String filename, [Map<String, Dynamic> options]);并且最终不知道“fileBits”应该是什么。

您可以在https://api.dartlang.org/stable/1.24.3/dart-html/File-class.html

找到我正在使用的文件类

我希望的最终状态是使用示例图像文件将其应用于Image Uploader Component。

谢谢。

1 个答案:

答案 0 :(得分:2)

您运行的测试上下文适用于网络,因此只有dart:html可用而不是dart:io。

正如您可以想象的那样,允许从进程文件系统中任意加载文件的Web脚本可能是一个巨大的安全漏洞。因此,网络对此有很多限制。

很多时候文件的内容对我们的测试无关紧要,所以我会做这样的事情:

File testImage = new File([], "bird.jpg"); // Mock contents don't matter

如果内容对测试很重要,您可以使用XHR来获取图像,或尝试内联字节。

var response = await HttpRequest.request("bird.jpg", responseType: "blob");
fixture.update((Component com){
  com.imageFile = response.response;
});

希望您的组件可以读取Blob本身。如果没有,你可以尝试使用'arraybuffer'responseType创建一个文件,但这有点复杂。