English 中文(简体)
Moq Linq-to-SQL readonly property
原标题:

I have a table aspnet_User in my model(dbml file) where I have a property UserName which is ReadOnly. I thought I could do this.

var mockAsp_NetUser = new Mock<aspnet_User>();
mockAsp_NetUser.SetupGet(au => au.UserName).Returns("JohnDoe");

But then I get an exception: Invalid setup on a non-overridable member.

An easy solution would be to set the ReadOnly property for UserName to false in the model designer. But this might be a hack. Is there a more "correct" way?

问题回答

You can t mock what is not either virtual or abstract.

If you are trying to unit test your code, a better approach would be to define an IUser class and let your code work against that interface.

Just an addition to Marks answer:

In the DBML you can set that the property should have "Instance Modifier" = "virtual". By default its set to (None).

For your example that means: In the DBML Designer, select the Member "UserName" and in the Properties you will find "Instance Modifier".

Once set to virtual your code will work.





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Transaction handling with TransactionScope

I am implementing Transaction using TransactionScope with the help this MSDN article http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx I just want to confirm that is ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

Microsoft.Contracts namespace

For what it is necessary Microsoft.Contracts namespace in asp.net? I mean, in what cases I could write using Microsoft.Contracts;?

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!

热门标签