我正在使用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