小编Vol*_*zun的帖子

模拟HttpContext不起作用

我试图模拟HttpContext,以便我可以单元测试我的控制器的Request.IsAuthenicated调用.我正在使用我在Scott Hanselman博客上发现代码来使用rhino.mocks模拟HttpContext.所以我有这个单元测试件:

PostsController postsController = new PostsController(postDL);
mocks.SetFakeControllerContext(postsController);
Expect.Call(postsController.Request.IsAuthenticated).Return(true);
Run Code Online (Sandbox Code Playgroud)

在我的控制器操作中,我有类似的事情, if(Request.IsAuthenticated).... 当我尝试运行单元测试时,测试失败抛出空异常,当我尝试调试单元测试时,我看到HttpContext从未分配给控制器.有任何想法吗?

asp.net asp.net-mvc unit-testing rhino-mocks mocking

10
推荐指数
2
解决办法
5149
查看次数

setter,用于未在接口中定义的属性

如果我的界面只有getter的签名,例如:

public interface IInterface 
{
   object Id{get;}
}
Run Code Online (Sandbox Code Playgroud)

因此,当我拥有该类时,接口仅在任何已实现的类上指定Id的公共getter:

public class Simple : IInterface
{
  object Id
  {
    get{return something;} 
    set{ do something else;}
  }
}
Run Code Online (Sandbox Code Playgroud)

由于未在接口中定义setter,编译器会抱怨setter.但是我并没有就限制器的接口合同做出任何规定; 为什么接口坚持派生类的setter?

c# interface

2
推荐指数
1
解决办法
603
查看次数

通用扩展方法

我正在根据Rob Connery的店面视频系列和应用这些技术开展这个mvc项目.在过滤和扩展方法上,我开始重复自己很多,例如:

public static Sponsor WithID(this IQueryable<Sponsor>qry, int ID)
{
    return qry.SingleOrDefault(s => s.ID== ID);
}

public static Keyword WithID(this IQueryable<Keyword>qry,int ID)
{
    return qry.SingleOrDefault(s => s.ID== ID);
}
....
Run Code Online (Sandbox Code Playgroud)

为了防止这种情况,我尝试编写这样的通用扩展:

public static T WithID<T>(this IQueryable<T>qry,int ID)
{
    return qry.SingleOrDefault(s=>ID==ID);
}
Run Code Online (Sandbox Code Playgroud)

但是s没有ID,那你怎么解决这个问题呢?

generics methods

0
推荐指数
1
解决办法
285
查看次数