【发布时间】:2014-11-17 11:42:19
【问题描述】:
我有一个控制器,我在其中对我的索引操作进行单元测试。我在单元测试 User.Identity.GetUserId() 时遇到问题
This is my controller
public ActionResult Index()
{
string userId = User.Identity.GetUserId();
DemoModel demoModel = _demoModelService.GetByUserId(userId);
MyModel myModel = new MyModel()
{
Name = demoModel.Name;
Description = demoModel.Description;
}
return View(myModel);
}
This is my Unit Test:
public void Test_Index_Action()
{
//Act
var result = controller.Index() as ViewResult;
//Assert
Assert.AreEqual("", result.ViewName);
}
当我调试我的测试方法时,当它到达我的 Index 操作的第一行代码 (User.Identity.GetUserId) 时,它会生成 null UserId。如何在单元测试此代码时访问 userId?
【问题讨论】:
-
你应该使用最小起订量来模拟单元测试用例的会话。 stackoverflow.com/questions/22762338/…
-
我试过你提供的链接..它给出了错误-
-
system.notsupportedexception:expression 引用了不属于模拟对象 x=>x.GetUserId @Prashant 的方法
-
你添加 Moq.dll 了吗?
-
是的..我已经添加了它