【发布时间】:2015-09-03 21:09:20
【问题描述】:
我对 Asp.Net 控制器操作方法有以下测试方法。
[TestMethod]
public void Get()
{
var controller = new MyController();
var result = controller.GetAListOfRecords();
Assert.IsNotNull(result);
Assert.IsTrue(result.Count() > 0);
}
动作是
[Authorize(Roles = "Users")]
public IQueryable<MyModel> GetAListOfRecords()
{
var user = User.Identity.Name; // null when called from the test method
var q = from t in ........
select t;
return return string.IsNullOrEmpty(user) ? Enumerable.Empty<MyModel>().AsQueryable() : q;
}
但是,var user = User.Identity.Name 不会在测试类中获取当前用户名(实际上它会被分配一个空字符串)。是否可以在测试方法中设置user?
更新:
我在测试类中尝试了以下内容,但 .....Identity.Name 是只读的。
controller.RequestContext.Principal.Identity.Name = @"mdynycmas\wangyi";
【问题讨论】:
-
我相信是的。但是,我不确定。您是否尝试过在测试项目上配置身份验证?您可以在
TestClass的构造函数中为用户签名。 -
能否详细介绍一下如何登录测试班?似乎也需要添加所有依赖的 asp.net dll?
标签: c# asp.net unit-testing mstest