Skip to content

Latest commit

 

History

History
97 lines (77 loc) · 1.41 KB

File metadata and controls

97 lines (77 loc) · 1.41 KB

IO0001. Use System.IO.Abstractions for improved application testability

Topic Value
Id IO0001
Severity Warning
Enabled True
Category System.IO.Abstractions

Description

Use System.IO.Abstractions for improved application testability

Code with Diagnostic

using System.IO;

namespace SomeNameSpace
{
	public class WithOutFileSystem
	{
		public WithOutFileSystem()
		{
		}

		public void SomeMethod()
		{
			const string filePath = "C:\\temp.txt";

			if (File.Exists(filePath))
			{
				File.Delete(filePath);
			}
		}
	}
}

Code with Fix

Constructor injection
using System.IO.Abstractions;

namespace SomeNameSpace
{
	public class WithOutFileSystem
	{
		private readonly IFileSystem _fileSystem;

		public WithOutFileSystem(IFileSystem fileSystem)
		{
			_fileSystem = fileSystem;
		}

		public void SomeMethod()
		{
			const string filePath = "C:\\temp.txt";

			if (File.Exists(filePath))
			{
				File.Delete(filePath);
			}
		}
	}
}
Creation in constructor
using System.IO.Abstractions;

namespace SomeNameSpace
{
	public class WithOutFileSystem
	{
		private readonly IFileSystem _fileSystem;

		public WithOutFileSystem()
		{
			_fileSystem = new FileSystem();
		}

		public void SomeMethod()
		{
			const string filePath = "C:\\temp.txt";

			if (File.Exists(filePath))
			{
				File.Delete(filePath);
			}
		}
	}
}