Я тестирую приложение уровня предприятия, используя 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
, предназначенным для добавления продукта в массивList без комментариев для комментариев productList.add(product)
?
Вы только объявили, что ложь 'initialData' делает в методе' getProducts', который я предполагаю, что 'ProductRepositoryOffline' вызывает в своей версии' getProducts() '. Что должно делать 'initialData.addProduct (pr)' do? На данный момент ничего не делает – Draken
Проблема заключается в том, что вы не можете определить Mockito для добавления объекта в определенный список при вызове метода, он не работает таким образом. Поэтому, если вы не делаете 'productList.add (product);', элемент 'product' никогда не будет добавлен в список. – Draken