Mocking virtual readonly properties with moq
Unit TestingTddMockingMoqUnit Testing Problem Overview
I couldn't find a way to do this, though this can be done by hand so why not with moq?
Unit Testing Solutions
Solution 1 - Unit Testing
Given this class
public abstract class MyAbstraction
{
public virtual string Foo
{
get { return "foo"; }
}
}
you can set up Foo (a read-only property) like this:
var stub = new Mock<MyAbstraction>();
stub.SetupGet(x => x.Foo).Returns("bar");
stub.Object.Foo
will now return "bar" instead of "foo".
Solution 2 - Unit Testing
You need to make sure property is virtual to make this work.