2013-10-08 42 views
2

我想知道Rhino-Mocks如何發現我想要存根的方法。下面的例子存根方法GetUserByName:下面我只是向前Rhino-Mocks如何模擬?

var stubUserRepository = MockRepository.GenerateStub<IUserRepository>(); 
stubUserRepository.Stub(x => x.GetUserByName("ayende")).Return(theUserObject); 

在這個例子中代表到框架。

我認爲它是使用方法簽名。我對嗎?

是否使用反射?如果是,如何?

我在哪裏可以找到它?怎麼運行的?

我正在使用C#和當下。 我想知道背後的概念和C#應用的東西。

回答

2

Stub呼叫建立了可選的Expect呼叫。傳遞給Stub(在本例中爲x => x.GetUserByName("ayende"))的函數實際上是針對模擬對象(它是一個Castle DynamicProxy對象)執行的。呼叫被攔截並記錄在MockRepository中,其參數與預期一致。一個IMethodOptions<>對象是從保存的有關該呼叫的數據中生成的並返回,隨後調用該對象Return(theUserObject)

您可以使用類似dotPeek的東西來更詳細地反彙編和檢查Rhino.Mocks.dll;相關代碼位於RhinoMocksExtensions.cs,位於Rhino.Mocks命名空間中。