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

问题描述 投票:1回答:1

我创建了我想要使用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);
});

我的问题是,这不是文件的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组件。

谢谢。

testing dart angular-dart dart-html
1个回答
2
投票

您运行的测试上下文是针对Web的,因此只有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来创建一个文件,但这有点复杂。

© www.soinside.com 2019 - 2024. All rights reserved.