编辑
这可以使用以下语法来完成:
A.CallTo(logger).Where(x => x.Method.Name == "Log").MustHaveHappened()
原始答案
没有简单的方法可以做到这一点,而且 - 如果我错了,请纠正我 - 我认为任何模拟框架中都没有。
话虽如此,下面的示例中提供了一种 - 不是那么容易 - 方法来做到这一点。
public interface ILogger
{
void Log(string value);
void Log(object value);
}
public class LoggerTests
{
public void FakeGetCallsExample()
{
var logger = A.Fake<ILogger>();
logger.Log("whatever");
var callsToLog = Fake.GetCalls(logger).Where(x => x.Method.Name.Equals("Log"));
// Asserting with NUnit.
Assert.That(callsToLog(), Is.Not.Empty);
}
// The following does not work as of now but I'll seriously consider
// implementing it:
public void AnyCallToWithCallSpecificationExample()
{
var logger = A.Fake<ILogger>();
logger.Log("whatever");
// I would add a "filtering" method to the Any.CallTo-syntax:
Any.CallTo(logger).WhereCallMatches(x => x.Method.Name.Equals("Log")).MustHaveHappened();
// It would also enable an extension method:
Any.CallTo(logger).ToMethodNamed("Log").MustHaveHappened();
}
}