2017-12-27 27 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