私はこの数時間、このMoq体操を理解しようとしています。私は次のクラスを持っています-そして私はやや簡単な検証をしようとしていますが失敗しています-そして私はその理由を理解できないようです。
Moqのセットアップ中に、BeginCounterが要求されたときにMock.Ofを返しますが、それを確認しようとすると失敗します。ただし、行p.Setup(e => e.BeginCounter.Increment())のコメントを外すと、検証は機能します。
私は何が欠けていますか?
public interface IPerformanceCounters
{
void Increment();
void Decrement();
}
public interface IContext
{
IPerformanceCounters BeginCounter { get; }
}
public class Test
{
private readonly IContext context;
public Test(IContext context) { this.context = context; }
public void React() { this.context.BeginCounter.Increment(); }
}
void Test()
{
// ARRANGE
var p = new Mock<IContext>();
p.Setup(e => e.BeginCounter).Returns(() => Mock.Of<IPerformanceCounters>()); // This does not work
// p.Setup(e => e.BeginCounter.Increment()); // However, this works!
// ACT
var test = new Test(p.Object);
test.React();
// ASSERT
p.Verify(v => v.BeginCounter.Increment(), Times.Once());
}