對於項目,我使用MEF框架的CompositeContainer類。現在我想做一個單元測試(用moq)來驗證ComposeParts(它是AttributedModelServices中的擴展方法)方法是否被調用。如果調用外部庫的方法,用Moq測試
只是用moq嘲笑它不起作用,因爲該方法不是虛擬的。我發現了一些方法來做到這一點,但他們都讓我改變CompositeContainer類,這是我不能做的。
在moq中是否有方法來測試外部第三方庫的非虛擬方法是否被調用?
在此先感謝您的答覆。
示例代碼:
public void Load(string path, CompositionContainer container)
{
container.ComposeParts(this);
}
這裏容器是由MEF庫和ComposeParts在System.ComponentModel.Composition命名空間的擴展方法:
//
// Summary:
// Creates composable parts from an array of attributed objects and composes
// them in the specified composition container.
//
// Parameters:
// container:
// The composition container to perform composition in.
//
// attributedParts:
// An array of attributed objects to compose.
public static void ComposeParts(this CompositionContainer container, params object[] attributedParts);
你能舉一個你打電話的擴展方法的例子嗎? –
您嘗試測試一個不屬於您的類是否調用某個方法? –
也許你正在測試一段錯誤的代碼,也許你應該測試在你的應用程序中調用這個方法的效果。 –