2013-02-15 42 views
9

我很新的ServiceStack。到目前爲止,我已經有幸獲得基本API並開始工作(Northwind示例對我特別有用)。然而,當我試圖建立單元和集成測試時,我感到磕磕絆絆。如何編寫單元/集成測試中ServiceStack

我發現從誰出的單元測試和集成測試一些(可能是不正確的)例子另一個ServiceStack用戶最近的要點,但我不能讓這些工作。

這是我一直在使用的參考: https://github.com/ServiceStack/ServiceStack/issues/435

這裏是我的一個基本單元測試的嘗試,主要使用借來的代碼來自其他用戶的要點是:https://gist.github.com/anonymous/4957788

當我嘗試運行HelloWorldTest中的測試用例引發了System.NotImplementedException,指出「無法解析服務'HelloWorldName'」。

這是混亂給我,因爲我傳遞一個請求DTO,而不是一個服務,這似乎與我打電話ExecuteService()方法來達成一致。但是例外情況表明ServiceStack將我的DTO視爲服務。

可能有人可能送我到如何正確地編寫單元測試和集成測試的ServiceStack一個良好的,典型的例子?我應該提到,我對.NET開發一般也是新手,所以也許我的無知正在閃閃發光。

非常感謝。

+0

看這個較早[答案爲一個單元和集成測試的示例](http://stackoverflow.com/a/14791657/85785) 。 – mythz 2013-02-15 05:15:15

+0

謝謝,mythz。關於集成測試的問題。通過端到端的集成測試,我需要讓服務實際運行,以便通過JsonServiceClient實例連接到它。 我該怎麼做? – 2013-02-15 19:49:38

+0

在下面的答案中提供了一些鏈接。 – mythz 2013-02-15 19:58:49

回答

5

看看testing docsthis earlier question並回答simple example on how to create a Unit and Integration test

而且大部分ServiceStack.WebHost.Endpoints.Tests測試的是隻使用一個自託管HttpListener APPHOST獨立的集成測試。 一些例子:

+0

所以,按照我的理解,我不能在運行集成測試時使用現有的APPHOST,而是我應該創建從AppHostHttpListenerBase新APPHOST。這是否意味着我必須將現有的Configure()方法從我的主AppHost複製到這個新的AppHost,以確保我的所有DB/Redis連接都已正確初始化? – 2013-02-15 20:12:34

+0

那麼你總是可以對自己的ASP.NET Web應用程序的開發實例運行集成測試,但除此之外,如果你只是想測試你的服務的一個子集,是的,只需要測試你想要做的事情就可以製作一個特定的AppHost。否則堅持孤立的單元測試服務,只是嘲笑你所需要的。 – mythz 2013-02-15 20:15:12

+0

謝謝,mythz。這有助於爲我解決問題,歡呼。 – 2013-02-15 20:30:40