2009-02-04 7 views
1

GUI를 파일을 업로드하는 사용자가 제공하는 스트림을 허용하는 비즈니스 로직 계층에 메소드가 있으며 적절한 방법을 테스트 할 수있는 적절한 방법이 있습니다. 이 스트림을 사용하여 의사 결정을 내립니다. 테스트 목적으로IO.Stream 상호 작용 테스트

public Sub Initialize(ByVal uploadStream As Stream) 
    ''// Logic using uploadStream 
End Sub 

나는 DI에이 방법으로 조롱 스트림을 좋겠지 만, 스트림 작업을 할 때마다 나는 추상화의 stiffling 부족을 찾을 수 있습니다.

Intuition은 Stream 래퍼를 만들어서 로직에 래퍼 (stream wapper)와의 상호 작용을 테스트 할 래퍼의 인터페이스를 허용해야한다고 말합니다.

앞으로 나아갈 수있는 가장 좋은 방법은 무엇입니까? 당신은 단지 방법은 "가짜"업로드를 전달하려면

답변

3

, 당신은 당신의 테스트 환경에 MemoryStream을 구성하고에 그것을 전달할 수 있습니다.

1

내가 너무 MemoryStream을을 사용하는 경향이있다. 일부 테스트의 경우 요청 된 바이트 수보다 적게 반환하도록 Read 메서드를 오버로드 할 수 있습니다. (스트림의 끝까지 도달하지 않으면 MemoryStream이 요청 된 바이트 수를 항상 반환하지만 네트워크 스트림은 스트림의 끝 전에 요청한 것보다 적은 바이트를 반환 할 수 있다고 생각합니다.