我們想模擬OperationContext
類用於測試目的。我們正在使用'模擬'。但OperationContext
是一個密封的類,不能被嘲笑。因此我們正試圖創建一個虛擬OperationContext
對象。但OperationContext
構造函數需要IContextChannel
作爲參數。我們想知道一種方法來獲得IContextChannel
,以便它可以傳遞給OperationContext
構造函數。WCF數據服務:模擬OperationContext
回答
NetFX project包含許多包裝類和接口來允許這樣的事情。
一般建議是implement wcf services without referencing wcf。
例子如何做到這一點是http://marcin.floryan.pl/blog/2012/01/do-we-really-need-wcfmock
我們替換到 operationResponse基準的基準來的OperationContext。 operationResponse應該定義爲一個 接口,並且可以在構造函數中注入,就像給出的示例中的 存儲庫一樣。我們的測試方法現在變爲 稍短且更具可讀性。
而且在http://blogs.msdn.com/b/ploeh/archive/2006/12/04/integrationtestingwcfservices.aspx
讓我們,一會兒,考慮到執行授權的必要性。您可以直接在您的每個 操作實施中檢查OperationContext.Current,但這會混合考慮(業務 邏輯中執行的操作與授權混合在一起)。 正確的方法是提供從 ServiceAuthorizationManager派生的類,並將服務配置爲使用此類 類進行授權。這可以讓你保持你的操作實現的單元測試 ,但很明顯,你還需要測試 授權管理器本身,事實證明,集成測試是完成這項任務的最簡單方法。
如果您仍需要模擬遵循建議從http://blogs.msdn.com/b/ploeh/archive/2008/06/28/unit-testing-duplex-wcf-services.aspx
所有你需要做的是用抽象的東西來代替電話 toOperationContext.GetCallbackChannel。在.NET 3.5上,最簡單的抽象是Func,它具有相同的 簽名,但如果您使用.NET 3.0,則始終可以定義類似的 您自己的委託類型。
或者作爲最後手段可以使用WCFmock
#if DEBUG
using WebOperationContext = System.ServiceModel.Web.MockedWebOperationContext;
#endif
例如,這是有用的,如果你想在 開發使用嘲笑版本,始終WCF版生產。這一切,你 不需要觸摸你現有的服務實現可言,一旦 你定義的別名,該服務已準備好進行測試
從http://blog.gfader.com/2010/08/how-to-unit-test-wcf-service.html
所有調用的OperationContext .Current.Channel.SessionId得到 被MockedOperationContext攔截,但是隻有在你的測試中,你是 嘲諷OperationContext。在您正常的環境中,MockedOperationContext充當真實OperationContext的代理。
- 1. 如何模擬WCF服務?
- 2. WCF的OperationContext
- 3. WCF/WCF數據服務/ WCF RIA服務
- 4. 平WCF數據服務或WCF服務
- 5. 如何在WCF服務中模擬數據層?
- 6. WCF服務,WCF RIA服務和WCF數據服務的區別
- 7. WCF服務中的System.DirectoryServices.AccountManagement.PrincipalContext和模擬
- 8. 如何使用WSDL模擬WCF服務?
- 9. WCF服務Azure的模擬器
- 10. WCF模擬Salesforce.com登錄服務
- 11. WCF數據服務
- 12. 單元測試用於WCF服務的IExtension <OperationContext>
- 13. WCF數據服務代理類模板
- 14. ASP.NET與WCF數據服務或WCF數據服務
- 15. Workflow Foundation線程和WCF OperationContext
- 16. 模擬/模擬postgresql中的重負載數據庫服務器
- 17. WCF RIA服務域服務元數據
- 18. WCF數據服務FTP
- 19. VerificationException與WCF數據服務
- 20. WCF數據服務和MSMQ
- 21. WCF數據服務認證
- 22. SOA和WCF數據服務
- 23. WCF數據服務和JQuery
- 24. WCF數據服務ODATA
- 25. WCF數據服務異常
- 26. WCF數據服務和ChangeInterceptor
- 27. WCF數據服務和Upserts
- 28. 安裝WCF數據服務
- 29. WCF服務緩存數據?
- 30. Dojo + WCF數據服務+ OData
你能提供包裝類的名字嗎?我在鏈接中看不到文檔。 – 2013-07-11 11:57:47