我在做一个ASP.Net MVC2项目并在其上开发一些单元测试用例。在我的控制器之一,如何使用Moq模拟ObjectResult.FirstOrDefault()使用Moq
String AllowedActions = "";
AllowedActions = entities.sp_IsAuthorized(GetLoggedUserId(), 1, item.SubCategoryId, "CreateMeeting_HTML").FirstOrDefault();
我无法嘲笑这个sp_IsAuthorized()方法,
public ObjectResult<global::System.String> sp_IsAuthorized(.....){
}
我试着模拟它以这种方式,
var entity = new Mock<TestMVCProductEntities>();
entity.Setup(x => x.sp_IsAuthorized(...)).Return(???);
但我有不知道怎么回
ObjectResult
这种类型的对象。帮我。
Mocq只能模拟'virtual'方法,所以如果'sp_IsAuthorized'不是虚拟的,它根本就不起作用。 – nemesv 2012-07-13 12:19:48
@nemesv Ya.It。但我的问题是我应该在这个声明中返回什么, entity.Setup(x => x.sp_IsAuthorized(...))。Return(???); 我已经把问号。 – Dilma 2012-07-13 12:22:52
我删除了我的答案,因为我意识到代码可能会自动生成,因此您不会更改返回类型。我建议你阅读[这篇文章](http://msdn.microsoft.com/en-us/ff714955.aspx)关于可测试性和实体框架 – 2012-07-13 13:07:20