2016-07-13 3 views
0

WhenCalled хорошо документирован повсеместно & Я не понимаю, почему я его использую, но я просто не могу заставить его работать так же, как это подробно описано в каждой статье, которую я видел по этой теме.Rhino Mocks WhenCalled - Делегат «System.Action» не принимает 1 аргументы

В принципе, вы должны быть в состоянии сделать что-то вроде:

mock.Expect(x => x. SingleOrDefault(null)) 
    .IgnoreArguments() 
    .WhenCalled(invocation => ((Action)invocation.Arguments[0]).Invoke()); 

Но это не компилируется для меня - я просто получаю сообщение об ошибке сказав делегат «System.Action» не принимает 1 аргументы.

Я использую V 4.0 Rhino Mocks - этот метод изменился? Я хочу использовать WhenCalled, чтобы захватить аргументы, переданные SingleOrDefault (в данном случае лямбда-выражение).

ответ

1

Все ответы в этом блоге:

Rhino Mocks 4.0.0

Ранее WhenCalled позволило вам выполнить действие, которое потребовалось, как один параметр, структуры данных, обволакивающей вызов метода. Поскольку действие вызывается, возвращаемое значение ожидания не может быть изменено. В текущей версии функция WhenCalled была слегка изменена, чтобы просто выполнить действие.

Для обеспечения аналогичной функции, такой как оригинал «WhenCalled», был добавлен новый метод «Перехват», который ожидает действия, которое принимает, в качестве единственного параметра, структура данных инкапсулирования вызова метода

TL; др: Использование переадресации вызова вместо WhenCalled

Смежные вопросы