我有一些代码:
public class ProcessManager : IProcessManager
{
private readonly IFolderWatcher _folderWatcher;
private readonly ILogger _logger;
private readonly Action<string> _action;
private readonly IReadFiles _readFiles;
private readonly IBankStatementComparisonManager _bankStatementComparisonManager;
private readonly IPrepareIncomingBankStatementRecords _prepareIncomingBankStatementRecords;
public ProcessManager(IFolderWatcher folderWatcher, ILogger logger,IReadFiles readFiles, IBankStatementComparisonManager bankStatementComparisonManager, IPrepareIncomingBankStatementRecords prepareIncomingBankStatementRecords)
{
this._folderWatcher = folderWatcher;
this._logger = logger;
this._readFiles = readFiles;
this._bankStatementComparisonManager = bankStatementComparisonManager;
this._prepareIncomingBankStatementRecords = prepareIncomingBankStatementRecords;
_action = ProcessFile;
}
public void Start() { StartMainProcess(); }
private void StartMainProcess()
{
try
{
_folderWatcher.StartFolderWatcher(_action);
}
catch (Exception e)
{
_logger.Error("Failed To Start Folder Watcher. Shutting Down.");
_logger.Error("Error Message: " + e.Message);
_logger.Error("Inner Exception: " + e.InnerException);
}
}
}
和测试:
public void Test()
{
//Arrange
var mockFolderWatcher = new Mock<IFolderWatcher>();
var mockLogger = new Mock<ILogger>();
var mockRFiles = new Mock<IReadFiles>();
var mockBankStatementComparisonManager = new Mock<IBankStatementComparisonManager>();
var mockPrepareIncomingBankStatementRecords = new Mock<IPrepareIncomingBankStatementRecords>();
var mockAction = new Mock<Action<string>>();
ProcessManager target = new ProcessManager(mockFolderWatcher.Object, mockLogger.Object, mockRFiles.Object, mockBankStatementComparisonManager.Object, mockPrepareIncomingBankStatementRecords.Object);
//Act
target.Start();
//Assert
mockFolderWatcher.Verify(m => m.StartFolderWatcher(mockAction.Object), Times.Once());
}
[运行测试(在调试中)时,我可以看到mockFolderWatcher.Invocations.Count = 1。但是我的测试失败了,我得到这个错误:
Moq.MockException HResult = 0x80131500消息=预期的调用在模拟上一次,但为0次:m =>m.StartFolderWatcher(操作)
所以为什么我会失败并出现错误?
您的断言: