Skip to content

Instantly share code, notes, and snippets.

@quakeboy
Last active January 20, 2016 10:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save quakeboy/069e9d04594547853200 to your computer and use it in GitHub Desktop.
Save quakeboy/069e9d04594547853200 to your computer and use it in GitHub Desktop.
//non unit-testable code
class Saver
{
void SaveMethod(string filename)
{
//do everything else before the following calls
DateTime dateTime = DateTime.Now();
FileManager.Save(filename, dateTime.ToString());
}
}
//unit-testable code
class Saver
{
IDateTimeProvider dateTime;
IFileManager fileManager;
void SaveMethod(string filename)
{
//do everything else before the following calls
DateTime dateTime = IDateTime.Now();
fileManager.Save(filename, dateTime.ToString());
}
}
interface IDateTimeProvider
{
DateTime Now();
}
interface IFileManager
{
void Save();
}
//adapter classes
class DateTimeProvider : IDateTimeProvider
{
DateTime Now()
{
return DateTime.Now();
}
}
class IFileManager : FileManager
{
void Save(string filename, string contents)
{
FileManager.Save(filename, contents);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment