2017-12-27 19 views
1

作成したコンポーネントIは、Angular Dartのフレームワークでテストしたいと思っていました。html Fileオブジェクトをテストしようとすると、サンプルイメージをあらかじめ入れておくことはできませんか?

テストファイルを作成すると、テストするサンプルファイルを作成する際に問題が発生しているようです。私hirerarchyで

は、私が持っている:

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

を持っている私が持っている問題は、これはファイルのダーツ/ IO実装ではないということです、代わりにHtml実装。

これは、Fileのコンポーネントの実装に適用するための読み取りアクセスのためにファイルを開くための最善の方法を決定しようとしていました。

私はfilereaderを探していましたが、それは存在するファイルに関連しています。これは私が問題を抱えているものです。

現在、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

マイ所望の最終状態は画像アップローダーコンポーネントに適用するサンプルイメージファイルを使用することです:

あなたは私が使用していますファイルクラスを見つけることができます。

ありがとうございます。

答えて

2

あなたが実行しているテストコンテキストはウェブ用ですので、dart:htmlのみ利用でき、dart:ioでは利用できません。

ウェブスクリプトで想像しているように、ファイルをプロセスファイルシステムから任意にロードできるようにすることは、大規模なセキュリティ違反となる可能性があります。したがって、ウェブにはその制限があります。

私はこのようなものだろうように、ファイルの内容は我々のテストのために重要ではありません多くの時間:内容はテストすることが重要であれば、あなたが取得するためにXHRを使用することができ

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

イメージを作成するか、バイトをインライン化しようとします。

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

あなたのコンポーネントはBlob自体を読み取ることを望みます。そうでない場合、代わりに 'arraybuffer' responseTypeを使用してファイルを作成しようとすることができますが、それは少し複雑です。

+0

私はこれらのパラメータをどのようにして増やすべきかはわかりませんでした。私のテストケースではそれを使います。 – Fallenreaper

関連する問題