Moq or MSpec do not have anything specifically built in to help you do this, except for some interesting syntax or functions that will help you organize your test. I think you are on the right track.
I'm curious how your service provides file change notifications. Does he open them publicly for testing? Or is this FileSystemWatcher completely hidden inside the service? If the service does not just send notification of events up and down, you should extract the monitoring file so that it can be easily tested.
You can do this with .NET events or callbacks or something else. No matter how you do it, I would write a test something like this ...
[Subject("File monitoring")] public class When_a_monitored_file_is_changed { Establish context = () => {
source share