最新バージョンの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メソッドを仮想として宣言すると、両方のテストに合格します。Barを仮想として宣言する必要がある理由がわかりません。すでに仮想ではありませんか?それはインターフェースから来ています。