2016-07-27 2 views
1

Moqabstract class method을 테스트하려고합니다.유닛 테스트 - SetOwinContext를 사용하는 Moq 추상 클래스

var mock = new Mock<BaseStudentController>(); 
mock.CallBase = true; 
var ta = mock.Object; 
var result = await ta.ActivateStudent"[email protected]", true); 

이렇게하면 기본 클래스가 성공적으로 모의 처리되고 내 추상 클래스의 메서드에 충돌합니다.

문제 :

는하지만, 내 추상 클래스는 Request.GetOwinContext을 기대하고있다. 나는 내가 위의 요청과 함께 그것을 어떻게 moq 할 수 있을지 확신하지 못한다.

답변

2

당신은 모의 ActivateStudent

ta.ControllerContext = new HttpControllerContext { Request = new HttpRequestMessage() }; 
ta.Request.SetOwinContext(/* mock IOwinContext here */); 

샘플 owin 컨텍스트를 호출하기 전에 ControllerContext를 설정해야합니다 :

var owinMock = new Mock<IOwinContext>(); 
owinMock.Setup(o => o.Authentication.User).Returns(new ClaimsPrincipal()); 
owinMock.Setup(o => o.Environment).Returns(new Dictionary<string, object> { {"key1", 123} }); 
var traceMock = new Mock<TextWriter>(); 
owinMock.Setup(o => o.TraceOutput).Returns(traceMock.Object); 
+0

감사는 점을 이해했다. 나는 이미 SetOwinContext()에 시간을 보냈지 만 문자 그대로 내가 어떻게 조롱하는지 확신 할 수 없다. 모든 아이디어 – immirza

+0

는'새로운 모의 (). Object'를 시도 했습니까? 필요한 행동을 설정하십시오. –

+0

감사합니다. 몇 분만 기다려주세요. 문제가 해결되었는지 여부를 확인하고 되돌립니다. – immirza

관련 문제