好的,我對此感到莫名其妙。 Moq沒有調用我的一個方法,但驗證的斷言確實表明它調用了所有其他非參數方法。我甚至已經添加了以下內容:Moq沒有調用方法命名爲Finalize
.Throws<Exception>()
只是爲了看看它甚至會拋出,並且仍然沒有(但將它添加到其他方法的工作原理)。我知道所使用的對象是我的模擬,因爲我添加了一個呼叫,該呼叫在呼叫之後立即被記錄。
方法名稱是Finalize()
。我懷疑該方法的命名是否是問題,但我嘗試了其他一切。
代碼通過使主要方法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();
}
而且,起訂量是4.0.10827.0進行鍼對.NET 3.5
運行
呃......你可能想要展示一些更多的代碼 - 只是說明Moq沒有做你期望的事情,並沒有太多的合作。 – driis
你想要我發佈什麼樣的代碼?我知道我正在調用它,因爲如果我驗證其他方法,相同的EXACT代碼將起作用。 –
那麼,Moq適用於無參數方法,我知道一個事實 - 所以你可能會錯過一些東西。你如何設置Moq,以及你對Moq'ed物體的確切呼叫是什麼? – driis