Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Юнит тест,проблема с моком  [new]
Zzz79
Member

Откуда:
Сообщений: 569
Ребят второй день бьюсь как рыба об стол не пойму почему так происходит

	public String writeString(String xml){
		Document document;
		try {
			document = loadXMLFromString(xml);
		} catch (Exception e) {
			throw new IllegalArgumentException(e);

		}
		String s =getOldValue(nodeList(document));
		String newS;
		Map<String,String>maps;
		try {
			maps=getValuesFromDb(s);
			if(maps.get("caption").isEmpty()||maps.get("description").isEmpty()){
				newS=xml;
			}else {
				newS = setNewValue(maps, document);}
		} catch (Exception e) {
			throw new IllegalArgumentException(e);
		}
		return newS;
	}



вот этот метод мне нужно замокать я это делаю вот так

CommonImporter commonImporter=mock(CommonImporter.class);
		when(commonImporter.writeString(anyString())).thenReturn("year");


проблема возникает вот тут
maps=getValuesFromDb(s)


вот этот метод
	public   Map<String, String> getValuesFromDb(String code) throws SQLException {
		Map<String, String> map = new HashMap<>();
		Map<String, String> captionDescr = new DictionaryTemplate("doc/dic/custom")
				.setFilter("CODE={0}", code)
				.select(new MapOutcome<String, String>("CAPTION;DESCRIPTION",
						binding -> binding.getString("CAPTION"),
						bindуing -> binding.getString("DESCRIPTION")));
		map.put("caption", captionDescr.keySet().iterator().next());
		map.put("description", captionDescr.values().iterator().next());
		return map;
	}

это некая обертка самописная над jdbc - выполняющая селекты

при запуске теста я получаю NPE

Caused by: java.lang.NullPointerException
	at com.custsystems.db.dbcon.DbConnector.getDbConfig(DbConnector.java:53)
	at com.custsystems.custerp.kernel.Context.getConnectionContext(Context.java:152)
	at com.custsystems.custerp.kernel.Context.getConnection(Context.java:157)
	at com.custsystems.custsql.query.SqlDao.getConnection(SqlDao.java:226)
	at com.custsystems.custsql.query.SqlDao.fetch(SqlDao.java:94)
	at com.custsystems.custsql.query.SqlQuery.fetch(SqlQuery.java:111)

я понимаю что по каким то причинам идет вызов метода getValuesFromDb-и конечно ничего не происходит,так как в тестах бд отсуствует да и не нужно мне ее тестировать

но это лирика почему мокая метод и явно указывая что нужно отдать при его вызове все равно идет вызов метода реального ?

Сообщение было отредактировано: 31 июл 20, 09:32
31 июл 20, 09:34    [22175942]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5383
Zzz79,
Опять ведь сам решишь задачку).
Дай ссыль на твое мокание только из букваря или инета.
"когда обучаются - делают с книжкой в обнимку" (с)

Сообщение было отредактировано: 31 июл 20, 10:14
31 июл 20, 10:17    [22175965]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
Zzz79
Member

Откуда:
Сообщений: 569
PetroNotC Sharp
Zzz79,
Опять ведь сам решишь задачку).
Дай ссыль на твое мокание только из букваря или инета.
"когда обучаются - делают с книжкой в обнимку" (с)

https://habr.com/ru/post/444982/
31 июл 20, 10:23    [22175970]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
Zzz79
Member

Откуда:
Сообщений: 569
Не тут врядли решу- я не пойму почему мокнутый класс и явное указание что должен делать метод,а флоу все равно идет по реальному методу и лезет в базу зачем то,которой нет
31 июл 20, 10:24    [22175972]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5383
Zzz79,

Теперь выкинь все из метода про бд и поставь одну строку райзе или log(....
Не надо тут ЛИШНЕЙ информации.
Сделай пример как в хабре. РАБОЧИЙ.
31 июл 20, 10:49    [22175984]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
Zzz79
Member

Откуда:
Сообщений: 569
PetroNotC Sharp
Zzz79,

Теперь выкинь все из метода про бд и поставь одну строку райзе или log(....
Не надо тут ЛИШНЕЙ информации.
Сделай пример как в хабре. РАБОЧИЙ.

где именно ты предлагаешь выкинуть и что укажи на участок кода
31 июл 20, 11:05    [22175993]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5383
Zzz79,
Вот внутри метода нас интересует?
public Map<String, String> getValuesFromDb(String code) throws SQLException {
Map<String, String> map = new HashMap<>();
Map<String, String> captionDescr = new DictionaryTemplate("doc/dic/custom")
.setFilter("CODE={0}", code)
.select(new MapOutcome<String, String>("CAPTION;DESCRIPTION",
binding -> binding.getString("CAPTION"),
bindуing -> binding.getString("DESCRIPTION")));
map.put("caption", captionDescr.keySet().iterator().next());
map.put("description", captionDescr.values().iterator().next());
return map;
}
...
И сделай рабочий пример из книжки.
А пртом уже свой.
31 июл 20, 11:18    [22175999]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5383
У тебя весь вопрос заключается:
- как мокнуть методХХХ()
А ты вывалил кучу не того кода что нужно.
31 июл 20, 11:21    [22176002]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
Zzz79
Member

Откуда:
Сообщений: 569
PetroNotC Sharp
Zzz79,
Вот внутри метода нас интересует?
public Map<String, String> getValuesFromDb(String code) throws SQLException {
Map<String, String> map = new HashMap<>();
Map<String, String> captionDescr = new DictionaryTemplate("doc/dic/custom")
.setFilter("CODE={0}", code)
.select(new MapOutcome<String, String>("CAPTION;DESCRIPTION",
binding -> binding.getString("CAPTION"),
bindуing -> binding.getString("DESCRIPTION")));
map.put("caption", captionDescr.keySet().iterator().next());
map.put("description", captionDescr.values().iterator().next());
return map;
}
...
И сделай рабочий пример из книжки.
А пртом уже свой.

а зачем мне этот метод выше? я его не тестирую
я мокаю совершено другой метод,но почему то флоу все равно идет сюда

если убираю заход в базу тест конечно же работает нормально
31 июл 20, 11:22    [22176003]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5383
Zzz79,
Тебе не нужен, а нам?
Эксбеционист?
)))
31 июл 20, 11:23    [22176005]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
Zzz79
Member

Откуда:
Сообщений: 569
PetroNotC Sharp
Zzz79,
Тебе не нужен, а нам?
Эксбеционист?
)))

ты тему прочти с начала - этот код приведен как пример куда идет флоу почему то

хотя метод его вызываюзий мокнут и ему задано определенное поведение
31 июл 20, 11:34    [22176010]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
crutchmaster
Member

Откуда: оттуда.
Сообщений: 1492
Так мокай сразу всю бд. Сделай там себе какой-нибудь sqlite с тестовыми данными, зачем эти костыли?
31 июл 20, 11:34    [22176011]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
crutchmaster
Member

Откуда: оттуда.
Сообщений: 1492
Zzz79,

Ну и у тебя обычная процедурщина вместо ооп. getValuesFromDb должен быть методом какого-то левого класса, который ты цепляешь через @Autowired в свой код. При тесте будет цепляться тестовый манагер, который будет загнан в конфиг тестового окружения. Как-то так.

Сообщение было отредактировано: 31 июл 20, 11:34
31 июл 20, 11:37    [22176014]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5383
Zzz79
PetroNotC Sharp
Zzz79,
Тебе не нужен, а нам?
Эксбеционист?
)))

ты тему прочти с начала - этот код приведен как пример куда идет флоу почему то

хотя метод его вызываюзий мокнут и ему задано определенное поведение
ну, тебе же поговорить как всегла надо. Стек показать.
Обсудить 130 страниц.
Мы мокаем метод и нам не интересен код внутри.
Логично?
31 июл 20, 11:42    [22176016]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5383
crutchmaster,
Да. У него процедурщина.
И метод writeString делает все подряд. И запрашивает бд, и... Косит и жнет.
31 июл 20, 11:45    [22176017]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
Zzz79
Member

Откуда:
Сообщений: 569
crutchmaster
Zzz79,

Ну и у тебя обычная процедурщина вместо ооп. getValuesFromDb должен быть методом какого-то левого класса, который ты цепляешь через @Autowired в свой код. При тесте будет цепляться тестовый манагер, который будет загнан в конфиг тестового окружения. Как-то так.

а по другому никак?

почему мокнутый метод все равно дергает методы внутри себя из реального кода?

как сделать так чтобы commonImporter.writeString(String xml) отдавал что ему прописано в моке

CommonImporter commonImporter=mock(CommonImporter.class);
		when(commonImporter.writeString(anyString())).thenReturn("year");


не заходя в свою нутрянку вот чего я не пойму - с какого перепуга он лезет в нутро метода ,вместо того чтобы просто отдать String "year"
31 июл 20, 11:55    [22176022]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
Zzz79
Member

Откуда:
Сообщений: 569
PetroNotC Sharp
crutchmaster,
Да. У него процедурщина.
И метод writeString делает все подряд. И запрашивает бд, и... Косит и жнет.


интересно а есть другие варианты? там же вызов другого метода идет а как по другому то?
31 июл 20, 11:57    [22176024]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
Zzz79
Member

Откуда:
Сообщений: 569
PetroNotC Sharp

Мы мокаем метод и нам не интересен код внутри.
Логично?

вот именно ,но почему то происходит так что мокнутый метод лезет в свою реальную нутрянку.
Почему ? хз
31 июл 20, 12:00    [22176025]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5383
Zzz79
PetroNotC Sharp
crutchmaster,
Да. У него процедурщина.
И метод writeString делает все подряд. И запрашивает бд, и... Косит и жнет.


интересно а есть другие варианты? там же вызов другого метода идет а как по другому то?
верхний метод зовут по имени БЛ.
А внутри 3 метода написанные выше.
БЛ разве "записатьСтроку? Имя класса какое?
31 июл 20, 12:01    [22176026]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5383
Zzz79
PetroNotC Sharp

Мы мокаем метод и нам не интересен код внутри.
Логично?

вот именно ,но почему то происходит так что мокнутый метод лезет в свою реальную нутрянку.
Почему ? хз
забалтываешь мою просьбу - вместо внутренностей вставить райзе и проверить.
31 июл 20, 12:04    [22176031]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
Zzz79
Member

Откуда:
Сообщений: 569
PetroNotC Sharp
Zzz79
пропущено...


интересно а есть другие варианты? там же вызов другого метода идет а как по другому то?
верхний метод зовут по имени БЛ.
А внутри 3 метода написанные выше.
БЛ разве "записатьСтроку? Имя класса какое?

верхний метод записать строку
имя класса CommonImport
31 июл 20, 12:09    [22176037]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
забыл ник
Member

Откуда:
Сообщений: 3370
CommonImporter commonImporter=mock(CommonImporter.class);
		when(commonImporter.writeString(anyString())).thenReturn("year");

Ну и как ты потом вызываешь метод? Ты сохраняешь вообще ссылку?
Варианта собственно два - либо ты вызываешь код на немокнутом интерфейсе, либо вызывается не тот метод(допустим с другими параметрами)
ПЫСЫ - потому я и говорю что моки это говнище
31 июл 20, 12:11    [22176041]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
SpringMan
Member

Откуда:
Сообщений: 207
Покажи свой тест целиком
31 июл 20, 12:12    [22176042]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 5383
Zzz79,
Короче, я бы просто в имя метода добавил работу с бд.
Так как это важно почти всегда. Типо:
Импорт.выполнить()
или
Импорт.модифицироватьХMLизБД()
Как то так.
Внутри работа с бд отдельным классом.

Сообщение было отредактировано: 31 июл 20, 12:12
31 июл 20, 12:14    [22176044]     Ответить | Цитировать Сообщить модератору
 Re: Юнит тест,проблема с моком  [new]
Zzz79
Member

Откуда:
Сообщений: 569
SpringMan
Покажи свой тест целиком

тестируемый класс
package com.custsystems.dictionary.docMaker.template.load.imports;

import com.custsystems.custerp.dictionary.IDictionary;
import com.custsystems.custerp.dictionary.dictionaryStorage.IDataItemModel;
import com.custsystems.custerp.kernel.Context;
import com.custsystems.custtools.log.Logger;
import com.custsystems.dictionary.docMaker.template.load.export.Field;
import com.custsystems.dictionary.docMaker.template.load.export.FieldsGroup;
import com.custsystems.dictionary.docMaker.template.load.export.Template;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Importer {

	private static final Logger logger = Logger.getLogger(Importer.class);

	IDictionary dic;

	public Importer() {
		this(Context.newDictionary("doc_maker/doc/isimple_template"));

	}

	public Importer(IDictionary dic) {
		this.dic = dic;
	}

	/**
	 * Метод для загрузки шаблона
	 *
	 * @param data данные для загрузки
	 * @return список IDataItemModel
	 */
	public List<IDataItemModel> load(byte[] data) {
		List<IDataItemModel> result = new ArrayList<>();
		for (Template template : toTemplate(data)) {
			result.add(createItem(template));
		}
		return result;
	}

	/**
	 * Метод для сохраннеия шаблона в справочнике
	 */
	public void save() {
		dic.post();
	}

	private Template[] toTemplate(byte[] fileData) {

		Template[] templates = new Template[0];
		try {
			templates = new ObjectMapper().readValue(fileData, Template[].class);
		} catch (IOException e) {
			logger.error(e);
			throw new IllegalArgumentException(e);

		}
		return templates;
	}

	private IDataItemModel createItem(Template item) {
		CommonImporter commonImporter=new CommonImporter();
					IDataItemModel record = dic.getNewDataRecord();
					record.set("GROUP", item.getGroup());
					record.set("ORDER", item.getOrder());
					record.set("DOC_VERSION", item.getDocVersion());
					record.set("DOC_KIND", item.getDocKind());
					record.set("DOC_OWNER_TYPE", item.getDocOwnerType());
					record.set("DOC_TITLE", item.getDocTitle());
					record.set("ROLES", item.getRoles());
					record.set("DOC_INFO", item.getDocInfo());
					record.set("SEND_DOC", item.isSendDoc());
					record.set("SEND_TYPE", item.getSendType());
					record.set("SEND_SP_NAME", item.getSendSpName());
					record.set("SEND_SP_FIELDS", item.getSendSpFields());
					record.set("CHECK_DOC", item.isCheckDoc());
					record.set("CHECK_TYPE", item.getCheckType());
					record.set("CHECK_SP_NAME", item.getCheckSpName());
					record.set("CHECK_SP_FIELDS", item.getCheckSpFields());
					record.set("CANCEL_DOC", item.isCancelDoc());
					record.set("CANCEL_TYPE", item.getCancelType());
					record.set("CANCEL_SP_NAME", item.getCancelSpName());
					record.set("CANCEL_SP_FIELDS", item.getCancelSpFields());
					record.set("IS_CONFIRM", item.isConfirm());
					IDictionary fieldGroups = (IDictionary) record.get("FIELD_GROUP");
					for (FieldsGroup group : item.getFieldGroup()) {
						IDataItemModel newGroup = fieldGroups.getNewDataRecord();
						newGroup.set("ORDER", group.getOrder());
						newGroup.set("NAME", group.getName());
						newGroup.set("NAME_ID", group.getNameId());
						newGroup.set("DESCRIPTION", group.getDescription());
						newGroup.set("COUNT", group.getCount());

						IDictionary fields = (IDictionary) newGroup.get("FIELDS");
						for (Field field : group.getFields()) {
							IDataItemModel newField = fields.getNewDataRecord();
							newField.set("GROUP_CODE", field.getGroupCode());
							newField.set("FIELD_ORDER", field.getOrder());
							newField.set("FIELD_NAME", field.getName());
							newField.set("FIELD_NAME_ID", field.getNameId());
							newField.set("DESCRIPTION", field.getDescription());
							newField.set("TOOLTIP", field.getTooltip());
							newField.set("FIELD_TYPE", field.getType());

							String xml=field.getTypeProperties();
							newField.set("FIELD_TYPE_PROPERTIES", commonImporter.writeString(xml));
							newField.set("FIELD_MANDATORY", field.isMandatory());
							newField.set("FIELD_MANDATORY_EXPRESSION", field.getMandatoryExpression());
							newField.set("FIELD_VISIBLE", field.isVisible());
							newField.set("FIELD_VISIBLE_EXPRESSION", field.getVisibleExpression());
							newField.set("FIELD_READONLY", field.isReadonly());
							newField.set("FIELD_READONLY_EXPRESSION", field.getReadonlyExpression());
							newField.set("COMPONENT_WIDTH", field.getComponentWidth());
							newField.set("DEFAULT_VALUE", field.getDefaultValue());
						}
					} return  record;
				}

}



вспомогоательный класс
package com.custsystems.dictionary.docMaker.template.load.imports;

import com.custsystems.custerp.dictionary.selectDictionary.template.DictionaryTemplate;
import com.custsystems.custerp.dictionary.selectDictionary.template.MapOutcome;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.StringReader;
import java.io.StringWriter;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

public class CommonImporter {

	public  Document loadXMLFromString(String xml) throws Exception{
		DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
		DocumentBuilder builder =factory.newDocumentBuilder();
		InputSource is=new InputSource(new StringReader(xml));
		return builder.parse(is);
	}

	public  String getOldValue(NodeList list) {
		for (int i = 0; i < list.getLength(); i++) {
			Node node = list.item(i);
			if (node.getAttributes().getNamedItem("NAME").getTextContent().equalsIgnoreCase("CUST_DIC_ITEM_CODE")) {
				return node.getAttributes().getNamedItem("VALUE").getTextContent();
			}
		}return "";
	}

	public  String setNewValue(Map<String,String> map, Document document) throws TransformerException {
		NodeList list= nodeList(document);
		for (int i = 0; i < list.getLength(); i++) {
			Node node = list.item(i);
			if (node.getAttributes().getNamedItem("NAME").getTextContent().equalsIgnoreCase("CUST_DIC_CAPTION")) {
				node.getAttributes().getNamedItem("VALUE").setTextContent(map.get("caption"));
			}
			if (node.getAttributes().getNamedItem("NAME").getTextContent().equalsIgnoreCase("CUST_DIC_ITEM_CAPTION")) {
				node.getAttributes().getNamedItem("VALUE").setTextContent(map.get("caption"));
			}
			if (node.getAttributes().getNamedItem("NAME").getTextContent().equalsIgnoreCase("CUST_DIC_ITEM_DESCRIPTION")) {
				node.getAttributes().getNamedItem("VALUE").setTextContent(map.get("description"));
			}
		}
		TransformerFactory tf = TransformerFactory.newInstance();
		Transformer trans = tf.newTransformer();
		StringWriter sw = new StringWriter();
		trans.transform(new DOMSource(document), new StreamResult(sw));
		return sw.toString();
	}

	public  NodeList nodeList(Document document){
		return document.getDocumentElement().getChildNodes();
	}

	public   Map<String, String> getValuesFromDb(String code) throws SQLException {
		Map<String, String> map = new HashMap<>();
		Map<String, String> captionDescr = new DictionaryTemplate("doc/dic/custom")
				.setFilter("CODE={0}", code)
				.select(new MapOutcome<String, String>("CAPTION;DESCRIPTION",
						binding -> binding.getString("CAPTION"),
						binding -> binding.getString("DESCRIPTION")));
		map.put("caption", captionDescr.keySet().iterator().next());
		map.put("description", captionDescr.values().iterator().next());
		return map;
	}

	public String writeString(String xml){
		Document document;
		try {
			document = loadXMLFromString(xml);
		} catch (Exception e) {
			throw new IllegalArgumentException(e);

		}
		String s =getOldValue(nodeList(document));
		String newS;
		Map<String,String>maps;
		try {
			maps=getValuesFromDb(s);
			if(maps.get("caption").isEmpty()||maps.get("description").isEmpty()){
				newS=xml;
			}else {
				newS = setNewValue(maps, document);}
		} catch (Exception e) {
			throw new IllegalArgumentException(e);
		}
		return newS;
	}
}


сам тест
package com.custsystems.dictionary.docMaker.template.load.imports;

import com.custsystems.custerp.dictionary.IDictionary;
import com.custsystems.custerp.dictionary.dictionaryStorage.IDataItemModel;
import com.custsystems.dictionary.docMaker.template.load.export.Field;
import com.custsystems.test.TestDataItemModel;
import org.apache.commons.io.IOUtils;
import org.junit.Test;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class ImporterTest {

	@Test
	public void successCreateOneItem() throws Exception {
		byte[] bytes = IOUtils.toByteArray(getClass().getResourceAsStream("template.json"));

		TestDataItemModel record = new TestDataItemModel();
		IDictionary dic = mock(IDictionary.class);
		when(dic.getNewDataRecord()).thenReturn(record);
		IDictionary fieldGroups=mock(IDictionary.class);
		TestDataItemModel newGroup=new TestDataItemModel();
		record.set("FIELD_GROUP",fieldGroups);
		when(fieldGroups.getNewDataRecord()).thenReturn(newGroup);
		IDictionary fields=mock(IDictionary.class);
		TestDataItemModel newField =new TestDataItemModel();
		newGroup.set("FIELDS",fields);
		when(fields.getNewDataRecord()).thenReturn(newField);


		Field field=mock(Field.class);
		when(field.getTypeProperties()).thenReturn("jkkjh");
		CommonImporter commonImporter=mock(CommonImporter.class);
		Map<String,String>map=new HashMap<>();
		map.put("S","b");
		map.put("d","e");
		when(commonImporter.getValuesFromDb(anyString())).thenReturn(map);
		when(commonImporter.writeString(anyString())).thenReturn("year");

		List<IDataItemModel> items = new Importer(dic).load(bytes);

		assertEquals(1, items.size());


	}
}
31 июл 20, 12:26    [22176063]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Java Ответить