tags:

views:

35

answers:

1

I have an interface like so:

Interface IWriteFile {
  string FileName {get;set;}
  void Open();
  void WriteData(string dataToWrite);
  void Close();
}

I want to test a class that will use this interface to populate a file. It will be calling WriteData a bunch of times and I just want to test the final output. Is there a way to introduce a new private field to the Mock object that will get appended to each time WriteData(Data) is called?

I really just want to see what the file will look like at the end of the day. Is there a better approach to this?

+3  A: 

So, do you need some sort of count of the number of times it is called?

int count = 0;
List<string> items = new List<string>();
var mock = new Mock<IWriteFile>();
mock.Setup(m => m.WriteData(It.IsAny<string>()))
    .Callback((string data) => { items.Add(data); count++; });
Matthew Abbott
+1. That's nice. I'm really starting to like Moq.
fletcher
not a count.. but that will work... instead of incrementing an int, i need to append to a string.. perfect.. thanks... Moq + Nunit is saving my sanity yet again
Rob