2016-07-27 24 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

は '新しいモック()。オブジェクト'を試しましたか?必要な動作を設定するだけです。 –

+0

ありがとう、私の問題を解決するかどうかを確認し、元に戻す数分を与える。 – immirza

関連する問題