RhinoMocks - Заблокируйте метод, который возвращает параметр

Ниже основной образец поточной обработки. Это породит 20 потоков; каждый поток произведет свое число потока. Выполните его и наблюдайте порядок, в котором они печатают.

import threading
class Foo (threading.Thread):
    def __init__(self,x):
        self.__x = x
        threading.Thread.__init__(self)
    def run (self):
          print str(self.__x)

for x in xrange(20):
    Foo(x).start()

, Поскольку Вы намекнули на потоки Python, реализованы через квантование времени. Это - то, как они получают "параллельный" эффект.

В моем примере мой класс Foo расширяет поток, я тогда реализую run метод, который является, куда код, который требуется выполнить в потоке, идет. Для запуска потока, Вы звоните start() на объекте потока, который автоматически вызовет run метод...

, Конечно, это - просто самые основы. Вы в конечном счете захотите узнать о семафорах, взаимных исключениях и блокировках для синхронизации потока и передачи сообщений.

36
задан Martin 12 November 2009 в 15:10
поделиться

2 ответа

Вы можете предоставить реализацию для метода с помощью обработчика Do () :

Func<TypeX,TypeY,TypeZ,TypeZ> returnThird = (x,y,z) => z;
mock.Expect(x => x.Method(null, null, null)).IgnoreArguments().Do(returnThird);

Обратите внимание, что TypeZ появляется дважды, потому что это одновременно тип входного аргумента и тип возвращаемого значения.

66
ответ дан 27 November 2019 в 05:44
поделиться

Вы можете использовать метод expect с обратным вызовом, чтобы вернуть значение, которое вам нужно. Следующее вернет значение null.

_service.Expect(o => o.Method(null, null, null))
        .Callback((object parm1, object parm2, object parm3) => { return parm3; });

Я не уверен, можно ли использовать обратный вызов на заглушке.

0
ответ дан 27 November 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: