我正在使用Mockito和JUnit測試企業級應用程序。這裏是一種用於在產品的離線的倉庫級測試將產品添加到脫機存儲庫類的方法我的代碼:Mockito:嘲笑對象並添加到ArrayList
@Mock
private InitialData initialData;
@InjectMocks
private ProductRepositoryOffline pro;
@Test
public void testPersistProduct() {
Product product = new Product(0, "", "", "", 0.0, true, "", 0, /*Product type*/null, "", 0, 0);
ArrayList<Product> productList = new ArrayList<Product>();
//productList.add(product);
Mockito.when(initialData.getProducts()).thenReturn(productList);
pro.persistProduct(product);
assertEquals(pro.getProducts().get(0), product);
}
這依賴於在類以下方法:
的方法是測試在ProductRepositoryOffline
:
@Override
public void persistProduct(Product pr) {
initialData.addProduct(pr);
}
InitialData
private ArrayList<Product> products = new ArrayList<Product>();
public void addProduct(Product product) {
products.add(product);
}
我想問的問題是,在pro.persistProduct(product)
的情況下,除非我已將產品添加到ArrayList
,而不是persistProduct
意味着將產品添加到arrayList,而不需要評論productList.add(product)
?
您只聲明'initialData'的模擬在'getProducts'方法中做了什麼,我假定'ProductRepositoryOffline'調用'getProducts()'的版本。 'initialData.addProduct(pr)'應該做些什麼?目前,它什麼也沒有做 – Draken
問題是,當調用一個方法時,你不能定義Mockito來添加一個對象到一個特定的列表中,它不會以這種方式工作。所以除非你做'productList.add(product);','product'的項目永遠不會被添加到列表中。 – Draken