我需要圍繞以HttpServletRequest和HttpServletResponse對象作爲參數的函數編寫單元測試。Servlets的單元測試
如果我創建這兩個對象(請求和響應)的模擬,一箇中的變化將如何反映在另一箇中。
Ex。如果我想單元測試我在響應對象中設置標題的代碼。
response.addHeader("X-UA-Compatible", "IE=EmulateIE7");
讓我知道如何繼續。
我需要圍繞以HttpServletRequest和HttpServletResponse對象作爲參數的函數編寫單元測試。Servlets的單元測試
如果我創建這兩個對象(請求和響應)的模擬,一箇中的變化將如何反映在另一箇中。
Ex。如果我想單元測試我在響應對象中設置標題的代碼。
response.addHeader("X-UA-Compatible", "IE=EmulateIE7");
讓我知道如何繼續。
在你的模擬庫中會有一些方法來斷言一個方法已被調用。所以,你的測試代碼將包括諸如聲明:
// psuedo-code
assertThat(mockResponse).addHeader("X-UA-Compatible", "IE=EmulateIE7");
在我使用(JMock的,的Mockito)嘲諷的框架,有嘲笑的對象之間沒有自動的合作。所以你的嘲弄HttpServletRequest
將不會與你的嘲笑HttpServletResponse
沒有關係,除非你聲明。
Spring Framework提供了一個MockHttpServletRequest
和MockHttpServletResponse
。
問題在於標準模擬,他們會爲您創建一個代理。所以你可能永遠不知道在代碼調用後是否設置了正確的值
response.addHeader(「X-UA-Compatible」,「IE = EmulateIE7」);
如果您自己創建存根,那麼您實際上可以驗證方法調用中設置的是什麼。但是這種方法也有很多問題。
嘗試使用其中一個定義的框架[here](http://stackoverflow.com/a/91109/245679)。這會讓你的生活更輕鬆。 –
你見過這個:http://httpunit.sourceforge.net/doc/servletunit-intro.html – NINCOMPOOP