OK、私はこの時点で困惑しています。Moq は私の 1 つのメソッドを呼び出していませんが、verify のアサートは、パラメーターなしではない他のすべてのメソッドを呼び出していることを示しています。私は以下を追加しました:
.Throws<Exception>()
それがスローされるかどうかを確認するだけで、まだ何もありません(ただし、他のメソッドに追加すると機能します)。使用されているオブジェクトが私のモックであることはわかっています。これは、ログに記録されていない呼び出しの直後に IS という呼び出しを追加したためです。
メソッド名はFinalize()
. メソッドの命名に問題があるとは思えませんが、他のすべてを試しました。
コード main メソッドを public にすることで、最も単純なソリューションに単純化した後:
var asyncRecognizerMock = new Mock<AsyncRecognizer>();
var asyncRecognizerFactoryMock = new Mock<AsyncRecognizerFactory>();
var trainerMock = new Mock<Trainer>();
trainerMock.Setup(trainer => trainer.Finalize()).Verifiable();
var trainerDataRepository = new TrainerDataRepository(asyncRecognizerFactoryMock.Object, asyncRecognizerMock.Object);
trainerDataRepository.FinalizeTrainer(trainerMock.Object);
trainerMock.Verify(trainer => trainer.Finalize(), Times.Once());
私の方法は次のとおりです。
public void FinalizeTrainer(Trainer wordTrainer)
{
wordTrainer.Finalize();
}
また、Moqは.Net 3.5に対して実行されている4.0.10827.0です