Попытка убедиться, что метод вызывается в макете, но, похоже, не может понять, почему я продолжаю получать исключение, что он не вызывается. Рассматриваемый метод выглядит следующим образом:
public class CustomerSyncEngine {
public CustomerSyncEngine(ILoggingProvider loggingProvider, ICrmProvider crmProvider, ICacheProvider cacheProvider) {
Logger = loggingProvider;
CrmProvider = crmProvider;
CacheProvider = cacheProvider;
}
public virtual void SyncPickLists() {
Logger.LogBeginPicklistSync();
// get all the pick lists from the local cache
var localCachePickLists = CacheProvider.GetPickLists().ToList();
// get all the pick lists from the remote system
var crmPickLists = CrmProvider.GetPickLists().ToList();
// build a sync plan
var changes = BuildPickListUpdatePlan(localCachePickLists, crmPickLists).ToList();
// run the sync
RunPickListSync(changes);
Logger.LogEndPicklistSync();
}
}
Я тогда написал такой тест:
[TestMethod]
public void TestSyncPickLists() {
// arrange
var mockCrm = new Mock<ICrmProvider>();
mockCrm.Verify(x => x.GetPickLists(), Times.Once(), "ICrmProvider.GetPickLists not called");
var mockCache = Mock.Of<ICacheProvider>();
var mockLogger = Mock.Of<ILoggingProvider>();
// act
var syncEngine = new CustomerSyncEngine(mockLogger, mockCrm.Object, mockCache);
syncEngine.SyncPickLists();
// assert
mockCrm.VerifyAll();
}
Когда я запускаю его, тест завершается с сообщением, которое я указал в Verify (). Поэтому я установил несколько точек останова и увидел, что тест никогда не вызывает метод syncEngine.SyncPickLists (), который меня смущает. Поэтому я закомментировал два оператора Verify () и VerifyAll (), и теперь я вижу, что все вызывается правильно. Что мне здесь не хватает? Похоже, я делаю именно то, что показано в Quickstart , а также в этой теме .