2
我想如果我寫一個測試這樣測試以下代碼如何檢查使用JMockit傳遞的具體模擬實例?
BufferedReader reader = new BufferedReader(new FileReader(args[0]));
,它的工作原理
@Mocked FileReader fileReader;
@Mocked BufferedReader bufferedReader;
//...
new NonStrictExpectations() {{
new FileReader("filename"); times = 1;
new BufferedReader(withAny(fileReader)); times = 1;
}};
然而,本次測試沒有請確保創建的FileReader被傳遞到構造函數的BufferedReader,只有a FileReader獲得通過。
什麼其實我要的是最後一行是
new BufferedReader(withSameInstance(fileReader)); times = 1;
不幸的是,這並不工作,因爲JMockit抱怨的BufferedReader的構造函數永遠不會調用指定的參數...
我試圖在文件讀取器上使用@Captured,但這也沒有奏效......
在文檔中對構造函數所描述的期望是什麼? – beluchin
@beluchin在[教程](http://jmockit.googlecode.com/svn/trunk/www/tutorial/BehaviorBasedTesting.html#delegates)中的「代表」一節中。但是它沒有提到'Invocation'參數,目前只在本教程的另一章和API文檔中進行了描述。 –
+1提及測試它與實現細節耦合太多並且建議使用小測試文件。 – beluchin