2017-09-04 80 views
1

我正在做一些單元測試,我需要創建一個PrincipalSearchResult<Principal>類型的測試集合。當您使用方法調用UserPrincipal.GetAuthorizationGroups()時,通常會返回此集合。你如何動態填充PrincipalSearchResult <Principal>集合?

此類型是System.DirectoryServices.AccountManagement namepsace的一部分,其中包含查詢Microsoft Active Directory的代碼。

如果我試圖簡單地創建一個新的集合像這樣,我得到一個錯誤:

PrincipalSearchResult<Principal> restResult = new PrincipalSearchResult<Principal>(); 

Error message: PrincipalSearchResult<Principal> does not contain a constructor that takes 0 arguments.

但我沒有得到任何智能感知時newing行動的集合,表示什麼參數傳遞構造函數。

如何創建並填充此類型?

+2

'PrincipalSearchResult'沒有公開的構造函數。該類通常是從內部初始化類的搜索中返回的。我建議將預期結果類型抽象爲'IEnumerable ',以便在測試時更容易模擬。 – Nkosi

+1

是的,正如@Nkosi暗示的那樣,沒有可用的構造函數。您需要爲嘲笑創建一個IEnumerable 。 –

回答

1

按照評論中提供的建議,我只是創建了一個包裝方法,它將PrincipalSearchResult<Principal>類型轉換爲IEnumerable<Principal>以進行模擬。