Как я могу протестировать этот метод расширения C #? - PullRequest
3 голосов
/ 20 марта 2011

Я просто не уверен, как смоделировать ситуацию, чтобы проверить это.Должен ли я на самом деле создать файл в файловой системе?

public static void DeleteIfExists(this FileInfo fileInfo)
{
   if (fileInfo.Exists)
   {
      fileInfo.Delete();
   }
}

1 Ответ

8 голосов
/ 20 марта 2011

Я бы использовал фальшивый фреймворк, например RhinoMocks .

[Test]
public void ShouldDeleteAFileWhenItExists()
{
    var mockInfo = MockRepository.GenerateMock<FileInfo>();
    mockInfo.Expect( i => i.Exists ).Return( true ).Repeat.Once();
    mockInfo.Expect( i => i.Delete() ).Repeat.Once();

    var extensions = new FileInfoExtensions();

    extensions.DeleteIfExists( mockInfo );

    mockInfo.VerifyAllExpectations();
}

[Test]
public void ShouldNotDeleteAFileWhenItDoesNotExist()
{
    var mockInfo = MockRepository.GenerateMock<FileInfo>();
    mockInfo.Expect( i => i.Exists ).Return( false ).Repeat.Once();
    mockInfo.Expect( i => i.Delete() ).Repeat.Never();

    var extensions = new FileInfoExtensions();

    extensions.DeleteIfExists( mockInfo );

    mockInfo.VerifyAllExpectations();
}

Другие тесты, когда Delete генерирует исключение и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...