2014-10-10 1 views
1

일반 (즉, 비 일반) Task을 반환하는 메서드를 모방하고 예상치를 설정하는 적절한 방법을 고민하고 있습니다. 이제 나는 다음과 같은 방법으로 ICanNotCode라는 인터페이스를 가지고 있다고 가정 해 봅시다 : 내 조롱하는 프레임 워크로 코뿔소 모의 객체를 사용하고 있는데,이 인터페이스를 사용하는 별도의 방법에 대한 테스트를 작성하는 것을 시도하고있다일반 작업을 반환하는 메서드에서 기대 설정

async Task DoSomethingIncredible(); 

. 기대는 다음과 같은 :

canNotCodeMock.Expect(mock => mock.DoSomethingIncredible()).Return(new Task(() => { })); 

코드는 컴파일하지만 내가 비주얼 스튜디오를 실행 할 때마다 내가 수동으로 작업 러너를 죽일 때까지 그냥 달려 있습니다.

Task을 반환하는 메소드에 대한 기대치를 설정하는 올바른 방법은 무엇입니까? 도와 줘서 고마워!

답변

5

Task 생성자를 사용하면 시작하지 않고 작업을 생성하므로 결코 완료되지 않습니다. 어떤 코드든지 await 그것은 결코 움직이지 않을 것입니다. 그게 아마도 당신의 환경이 막힌 이유 일 것입니다. 호출자가 사용 Task.FromResult에 수행 할 수 있도록 만 완료 작업을해야하는 경우 :

canNotCodeMock.Expect(mock => mock.DoSomethingIncredible()).Return(Task.FromResult(-1)); 

그것을하지 않습니다 정말 문제가 실제로 결과 무엇 때문에 제네릭이 아닌 Task에서 일반 Task<int> 상속합니다.

관련 문제