2010-02-12 16 views
1

我開始使用TDD,並且想知道添加服務引用來測試我的項目是否是一種不好的做法,或者我只是在依賴於WCF服務的測試中嘲笑假服務。WCF + TDD:爲您的測試項目添加服務引用:錯誤?

+0

有沒有任何文件詳細說明這一點? – 2010-02-12 18:50:51

+0

我不明白。你想TDD你的服務?那麼這不是TDD,你應該創建TDD方法來創建你的實際服務實現(服務類!) – PositiveGuy 2013-10-25 05:25:36

+0

,並且你應該總是嘲笑一個Web服務,而不是使用代理引用。 – PositiveGuy 2013-10-25 05:26:00

回答

2

是的,將服務引用添加到單元測試項目是一種不好的做法。您可以使用生成的服務合約接口來模擬測試中真正的WCF服務行爲。

+1

另外,如果您正在測試WCF管道,則可以使用測試框架線程作爲主機(MSTEST或其他)。這假定你沒有使用像IIS這樣的東西作爲主機。 – 2010-02-12 22:10:42

0

與使用服務引用不同,您可以使用服務契約來嘲笑ChannelFactory。

+0

這是什麼東西在TDD附近? TDD意味着您先爲不存在的服務創建測試,然後在編寫失敗的測試時實施服務。 – PositiveGuy 2013-10-25 05:27:02

+0

我認爲我的句子中的關鍵詞是模擬的。你將得到你的服務實現的契約,然後你會使用一個模擬框架(MOQ等)來給你的測試提供一些東西來運行。就像這裏提到的http://fczaja.blogspot.co.uk/2012/10/mocking-wcf-client-with-moq.html。 – Rus 2013-10-25 09:08:56

1

有一個服務ref可能是一個糟糕的路要走,你可以考慮實現網關模式,例如, IMyFooServiceGateway作爲額外的抽象層。通過這種方式,您可以使應用程序更加鬆散地耦合並獲得一些額外的可測試性(在您測試項目中,您會參考包含IMyFooServiceGateway的分離程序集,並手動創建一個實現IMyFooServiceGateway的模擬程序或使用模擬框架,如Rhino Mocks創建一個給你。

0

如果這是目標,測試的項目有一個服務引用,你不應該有額外的服務引用添加到測試項目。

當添加一個服務引用對於一個項目,通常爲其生成的代碼包含一個可公開訪問的服務接口,因此測試項目只需要引用目標項目就可以看到這個接口,然後這個接口可以放到你的嘲弄中選擇圖書館或手動嘲笑。

值得注意的是,生成的接口並不一定遵循接口的典型「IFoo」命名約定,因此它不是很明顯。

相關問題