好吧,我在这一点上感到困惑。Moq 没有调用我的一个方法,但验证上的断言确实表明它正在调用我所有其他非无参数的方法。我什至添加了以下内容:
.Throws<Exception>()
只是看看它是否会抛出,但仍然没有(但将其添加到其他方法中有效)。我知道正在使用的对象是我的模拟对象,因为我添加了一个调用,该调用在调用之后立即被记录。
方法名称是Finalize()
. 我怀疑方法的命名是问题,但我已经尝试了其他所有方法。
代码通过公开主要方法简化为最简单的解决方案后:
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();
}
此外,最小起订量为 4.0.10827.0,针对 .Net 3.5 运行