tags:

views:

83

answers:

1

I have an abstract class that has a virtual method. The method is virtual in the event that a later implementation needs to override that functionality.

However, Moq proxies all virtual methods so I don't seem to be able to test the actual code that's written, and instead uses the Mock setup for that method (which is currently to return the default value).

Example abstract:

public abstract SomeAbstract
{
    public abstract Format(IFormatProvider provider, string format)
    {
          // does some stuff i need to test
    }
}

My NUnit test:

[Test]
public void Should_Set_Format_State()
{
   Mock<SomeAbstract> mock = new Mock<SomeAbstract>();
   mock.Object.Format(CultureInfo.CurrentCulture, "format string");

   // do tests to make sure Format correctly changed the object's state
}

How do I set up my Mock object to just let my virtual Format method work, without having to remove virtual from the method?! Perhaps I'm abusing the mocking concept in this case.

+6  A: 

I believe setting "CallBase = true" on the mock will work. See the "Customizing Mock Behavior" section of the Quick Start

Pete
Whoops, I'm an idiot. Thanks!
HackedByChinese