Skip to content

Instantly share code, notes, and snippets.

@mattflo
Created May 21, 2011 22:58
Show Gist options
  • Save mattflo/984979 to your computer and use it in GitHub Desktop.
Save mattflo/984979 to your computer and use it in GitHub Desktop.
Mephisto NSpec
using System;
using Castle.Core.Logging;
using System.Collections.Generic;
using NSpec;
using NSubstitute;
namespace Mephisto.Services
{
class describe_FileTransformer : nspec
{
void before_each()
{
logger = Substitute.For<ILogger>();
reader = Substitute.For<IFileReader>();
writer = Substitute.For<IFileWriter>();
reader.Read().Returns(new[] { new CashFlow() });
transformer = new FileTransformer(reader, writer) { Logger = logger };
}
void when_shazaming()
{
act = () => transformer.Shazam();
specify = () => logger.Received().Info(Arg.Any<String>());
specify = () => reader.Received().Read();
specify = () => writer.Received().Write(Arg.Any<IEnumerable<CashFlow>>());
}
ILogger logger;
IFileReader reader;
IFileWriter writer;
FileTransformer transformer;
}
public class FileTransformer
{
IFileReader reader;
IFileWriter writer;
public ILogger Logger { get; set; }
public FileTransformer(IFileReader reader, IFileWriter writer)
{
this.reader = reader;
this.writer = writer;
}
public void Shazam()
{
Logger.Info("Mephisto: I am tranforming your file.");
writer.Write(reader.Read());
}
}
public interface IFileWriter
{
void Write(object read);
}
public interface IFileReader
{
object Read();
}
public class CashFlow
{
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment