2012-11-27 42 views
7

Moqフレームワークを使用して認証されたユーザを模擬する方法。フォーム認証が使用されました。ここユニットテストでMoqを使用して認証されたユーザを模倣する

私はユーザーIDの値を模擬する必要があり、私は

public PartialViewResult MyGoals() 
{ 
    int userid = ((SocialGoalUser)(User.Identity)).UserId; 
    var Goals = goalService.GetMyGoals(userid); 
    return PartialView("_MyGoalsView", Goals); 
} 

以下のアクションのためのユニットテストを記述する必要が

+2

アイドル好奇心 - ここに尋ねる前に何か試してみましたか?何があなたのために働かなかったのですか? –

+1

多分[類似のトピックです](http://stackoverflow.com/questions/3027264/mocking-user-identity-in-asp-net-mvc)助けてくれますか? –

+1

Wehey。ちょうど私もそれを解決したように。結論は、依存性注入や制御の逆転などのトピックを調べることです。 –

答えて

18

私はそのようなものを使用している、多分それはあなたを助けます:

var controllerContext = new Mock<ControllerContext>(); 
var principal = new Moq.Mock<IPrincipal>(); 
principal.Setup(p => p.IsInRole("Administrator")).Returns(true); 
principal.SetupGet(x => x.Identity.Name).Returns(userName); 
controllerContext.SetupGet(x => x.HttpContext.User).Returns(principal.Object); 
controller.ControllerContext = controllerContext.Object; 
+0

同様の方法で、 'IPrincipal'を模倣しないでください: ' contollerContext.Setup(ctx => ctx.HttpContext.User.IsInRole( "Administrator"))。 –

関連する問題