2
我有一個間接使用類Foo
的測試用例。我不在乎Foo是用於測試用例的目的。我應該可以嘲笑它。如何使用EasyMock創建「深」模擬
Foo mock = EasyMock.createMock(Foo.class);
但是,測試用例使用一個庫調用Foo上的幾個方法。其中一些方法返回對象,然後這個庫在這些返回的對象上調用幾個方法。對於這個測試來說,這些對象是什麼並不重要,只是它們不是null而且不會導致NullPointerException。
我一直在經歷和加入的期望呼叫一大堆類似下面的每個對象和方法,這個庫調用:
Bar bar = EasyMock.createMock(Bar.class);
Baz baz = EasyMock.createMock(Baz.class);
EasyMock.expect(mock.getBar()).andReturn(bar).anyTimes();
EasyMock.expect(bar.getBaz()).andReturn(baz).anyTimes();
基本上,只是一遍又一遍地對任何的期望創造這個庫最終調用的方法。
同樣,對於我的測試目的來說,對象本身並不重要。大多數情況下,庫只需要它們非空。
有沒有辦法讓這個自動化?我想要的是某種「深度模擬」功能,我可以告訴EasyMock自動返回通過模擬對象獲得的任何對象的模擬對象。