为什么我的单元考试不及格

问题描述 投票:0回答:1

我有一些代码:

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(操作)

所以为什么我会失败并出现错误?

c# nunit moq
1个回答
2
投票

您的断言:

© www.soinside.com 2019 - 2024. All rights reserved.