I came up with a solution using callbacks:
Action<string> callback = (file) => Assert.IsTrue(File.Exists(file));
mockProcessor.Setup(x => x.ProcessFile(It.IsAny<string>)).Callback(callback);
As it turns out, the bug I'm trying to hunt down depends on the fact that ProcessFile()
deletes the file after processing. Naturally it's trivial to add that to the above callback.
So now I can go about actually trying to fix the bug...