MOQ «TestMethod (Action <int>callback)» и возможность «обратного вызова» callback - PullRequest
4 голосов
/ 26 октября 2010

Oook,
Я хочу высказать обратный звонок, который я знаю, что мой сервис позвонит. Например:

public interface ITestMe { void TestMethod(Action<int> callback); }

В приложении при вызове 'TestMethod' я бы передавал метод обратного вызова, чтобы после его запуска нажать кнопку, которая будет делать что-то на основе параметров. Как правило, в этом случае это используется так:

...
testMe.TestMethod(
    (ret) => 
        {
        if(ret < 0)
            AddToErrorCollection(ret);
        else
            AddToSuccessCollection(ret);
        }
    );

Что я хотел бы сделать в MOQ, так это вызвать этот анонимный метод с диапазоном значений, то есть что-то вроде:

myMock.Setup(m => m.TestMethod(It.IsAny<Action<int>>())).... //Call that action!!??

Есть ли в любом случае, чтобы сделать это?
Это даже правильный способ сделать это?

1 Ответ

7 голосов
/ 26 октября 2010

попробуйте это:

myMock.Setup(m => m.TestMethod(It.IsAny<Action<int>>())).Callback<Action<int>>((action) => action(4));

хотя это кажется довольно запутанным способом по существу проверить ваш метод обратного вызова. Почему бы не проверить это напрямую?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...