2013-04-15 42 views
3

我需要圍繞以HttpServletRequest和HttpServletResponse對象作爲參數的函數編寫單元測試。Servlets的單元測試

如果我創建這兩個對象(請求和響應)的模擬,一箇中的變化將如何反映在另一箇中。

Ex。如果我想單元測試我在響應對象中設置標題的代碼。

response.addHeader("X-UA-Compatible", "IE=EmulateIE7"); 

讓我知道如何繼續。

+2

嘗試使用其中一個定義的框架[here](http://stackoverflow.com/a/91109/245679)。這會讓你的生活更輕鬆。 –

+1

你見過這個:http://httpunit.sourceforge.net/doc/servletunit-intro.html – NINCOMPOOP

回答

0

在你的模擬庫中會有一些方法來斷言一個方法已被調用。所以,你的測試代碼將包括諸如聲明:

// psuedo-code 
assertThat(mockResponse).addHeader("X-UA-Compatible", "IE=EmulateIE7"); 

在我使用(JMock的,的Mockito)嘲諷的框架,有嘲笑的對象之間沒有自動的合作。所以你的嘲弄HttpServletRequest將不會與你的嘲笑HttpServletResponse沒有關係,除非你聲明。

0

問題在於標準模擬,他們會爲您創建一個代理。所以你可能永遠不知道在代碼調用後是否設置了正確的值

response.addHeader(「X-UA-Compatible」,「IE = EmulateIE7」);

如果您自己創建存根,那麼您實際上可以驗證方法調用中設置的是什麼。但是這種方法也有很多問題。