Сначала создайте конкретный класс, чтобы увидеть, вызывается ли правильный метод Debug () в TestFuncLambda.
Это гарантирует, что он не выполняет какое-то странное преобразование лямбды в строку.
Как только вы убедитесь, что вы вызываете правильную версию, вы изолировали проблему с RhinoMocks. Это может быть ошибка с насмешками носорога. Итак, давайте уменьшим набор сбоев, но поместим лямбду в новый FormatMessageHandler () перед тем, как передать ее в Debug. Это гарантирует, что правильная макетируемая функция вызывается, а не переводится как-то еще.
Если вы не нашли ошибку на данный момент, и она все еще не работает, попробуйте создать экземпляр FormatMessageHandler () и сохранить его как статическую переменную-член (просто чтобы проверить, что не так). Передайте это, сохраненное в вызове TestFuncDebug, в Debug () и вызов AssertWasCalled (). Если это не сработает, у меня нет идей.
Кстати, я не знаю, что такое IgnoreArguments (), но мне никогда не приходится вызывать его в моих вызовах RhinoMocks для AssertWasCalled. Обычно с Arg <>. Is.Anthing работает нормально.