Уведомление, когда файл изменяется?

Исключение вызвано тем, что вы вызвали члена в строгом издевательстве

IMyClassLogger logger = MockRepository.GenerateStrictMock<IMyClassLogger>(); //<-- Strict Mock here

, для которого не определены ожидания.

Вы вызываете

_database = new Database(_logger.BaseLogger);

в конструкторе, но не ожидаете, что он будет вызван, поэтому вы получите ExpectationViolationException для IMyClassLogger.get_BaseLogger(), как указано в сообщении об исключении

[ 119] Вам нужно установить ожидание для этого члена

[TestMethod]
public void Ctor_ValidParams_CreatesObject()
{
    // Arrange
    ILogger baseLogger =  MockRepository.GenerateMock<ILogger>();
    IMyClassLogger logger = MockRepository.GenerateStrictMock<IMyClassLogger>();
    logger.Stub(_ => _.BaseLogger).Return(baseLogger);

    // Act
    var result = new MyClassDataAccess(logger);

    // Assert
    Assert.IsNotNull(result);
}
106
задан Mihai Limbășan 6 April 2009 в 14:36
поделиться

3 ответа

Это была бы Система. IO.FileSystemWatcher.

62
ответ дан Mihai Limbășan 24 November 2019 в 03:47
поделиться

Можно использовать FileSystemWatcher класс.

public void CreateFileWatcher(string path)
{
    // Create a new FileSystemWatcher and set its properties.
    FileSystemWatcher watcher = new FileSystemWatcher();
    watcher.Path = path;
    /* Watch for changes in LastAccess and LastWrite times, and 
       the renaming of files or directories. */
    watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite 
       | NotifyFilters.FileName | NotifyFilters.DirectoryName;
    // Only watch text files.
    watcher.Filter = "*.txt";

    // Add event handlers.
    watcher.Changed += new FileSystemEventHandler(OnChanged);
    watcher.Created += new FileSystemEventHandler(OnChanged);
    watcher.Deleted += new FileSystemEventHandler(OnChanged);
    watcher.Renamed += new RenamedEventHandler(OnRenamed);

    // Begin watching.
    watcher.EnableRaisingEvents = true;
}

// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e)
{
    // Specify what is done when a file is changed, created, or deleted.
   Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
}

private static void OnRenamed(object source, RenamedEventArgs e)
{
    // Specify what is done when a file is renamed.
    Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
}
192
ответ дан Dirk Vollmar 24 November 2019 в 03:47
поделиться

Используйте FileSystemWatcher. Можно отфильтровать для событий модификации только.

5
ответ дан Majid 24 November 2019 в 03:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: