2010-08-03 2 views
2
내 저장소 클래스의

일 (PersonRepo 말은) 그 자체가 또 하나 개의 객체를 예상하는 클래스에 의해 상속이 별개로이비웃음 Func을 속성

private readonly Func<INameRepo> _nameRepo; 

과 같은 해당 속성 무언가로 대리자를 가지고 (세션을 말한다). 난 내 시험에서이 작업을 초기화하기 때

따라서 나는

var funcNameRepo=autoMock.Mock<Func<INameRepo>>(); 
_personRepo= new PersonRepo(session,funcNameRepo.Object); 

그런 짓을하지만 난 다음 오류 얻을이 테스트를 실행하면

Unable to cast object of type 'System.Func`1[Repositories.Interfaces.INameRepo]' to type Moq.IMocked`1[System.Func`1[Repositories.Interfaces.INameRepo]]'. 

무엇 당신은 내가 잘못하고 생각 해요 이리. 도와주세요.

+0

당신이있는 거 구문 때문에 제네릭의 왜곡지고 있습니다. 10101 버튼을 사용하여 코드를 proeprly 형식으로 지정하십시오. –

+1

오류가 발생했을 때 스택 추적은 어떻게됩니까? IMocked가 예상되는 것처럼 보이는 코드는 어디에도 보이지 않습니다. <...>. – dahlbyk

+0

어린이 유형의 해결을 시도하기 때문에 Automock 문제 일 수 있습니다. Automock을 사용하지 않고 MOQ와 동일한 예제를 시도해 볼 수 있습니까? –

답변

3

Func<INameRepo>을 조롱 했습니까? 당신이 INameRepo을 조롱하려는 경우, INameRepo에 대한 모의를 생성합니다 (Func<INameRepo> 될 것이다) 람다를 통해 PersonRepo에 전달 :

var nameRepo = autoMock.Mock<INameRepo>(); 
_personRepo = new PersonRepo(session,() => nameRepo.Object); 
+0

안녕하세요. 이 작품 .. 죄송합니다 회신하는 데 시간이 걸렸습니다 .. 나는 내 생성자에서 func 제거했다,하지만 이것은 갑자기 오늘 나를 때렸다. – Baz1nga