我创建的组件我想用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。
谢谢。
答案 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创建一个文件,但这有点复杂。