Может кто-нибудь объяснить, почему оба теста, использующие последние версии платформ Moq и Rhino.Mocks, терпят неудачу, жалуясь, что Bar не является виртуальным / перезаписываемым методом:
public interface IFoo
{
string Bar();
}
public class Foo : IFoo
{
public string Bar()
{
return "Bar";
}
}
[TestMethod]
public void MoqTest()
{
var foo = new Mock<Foo>();
foo.Setup(f => f.Bar()).Returns("abc");
Assert.AreEqual("abc", foo.Object.Bar());
}
[TestMethod]
public void RhinoTest()
{
var foo = new MockRepository().PartialMock<Foo>();
foo.Expect(f => f.Bar()).Return("abc");
foo.Replay();
Assert.AreEqual("abc", foo.Bar());
}
Если я объявлю метод Bar виртуальным, оба теста пройдут. Я не понимаю, почему я должен объявить Бар виртуальным. Разве это уже не виртуально? Это происходит из интерфейса.