Хотя это работает только для скалярных массивов (см. примечание ниже), оно короткое:
array1.length === array2.length && array1.every(function(value, index) { return value === array2[index]})
Rr, в ECMAScript 6 / CoffeeScript / TypeScript со стрелочными функциями:
array1.length === array2.length && array1.every((value, index) => value === array2[index])
(Примечание: здесь «скаляр» означает значения, которые можно напрямую сравнивать с помощью ===
. Итак: числа, строки, объекты по ссылке, функции по ссылке. Подробнее см. в ссылке MDN для получения дополнительной информации о операторах сравнения).
UPDATE
Из того, что я прочитал из комментариев, сортировка массива и сравнение могут дать точный результат:
array1.length === array2.length && array1.sort().every(function(value, index) { return value === array2.sort()[index]});
Например :
array1 = [2,3,1,4];
array2 = [1,2,3,4];
Тогда приведенный выше код даст true
Вы могли использовать DBUnit вместе с HSQLDB, который может считать его исходные данные с файлов CSV, например.
Существует DBUnit. Это не позволит Вам тестировать свой код jdbc без базы данных, но кажется, что Вы могли представить различный набор покупок путем эмуляции базы данных.
Вот почему Вы имеете дерби (теперь названный JavaDB) или sqlite - они - маленькие, простые базы данных, которые можно создать, загрузиться, тест против и уничтожить относительно быстро и просто.
Я сказал бы, что HSQL является способом пойти во время Ваших модульных тестов. Точка Вашего теста должна протестировать Ваш код jdbc и удостовериться, что это работает. Добавление пользовательских классов или насмешка вызовов jdbc могут легко скрыть ошибки.
я главным образом использую mysql и когда тестовый прогон класс драйвера и URL изменяется на org.hsqldb.jdbcDriver и jdbc:hsqldb:mem:test.
В то время как способом дразнить jdbc в Вашем приложении является, конечно, иждивенец о том, как Вы реализовали свои фактические jdbc транзакции.
, Если бы Вы используете jdbc как есть, я предположил бы, что Вы записали себе служебный своего рода класс, чтобы сделать некоторые задачи в строке DBUtils.getMetadataFor(String tablename)
. То, что это означало бы, - то, что необходимо было бы создать насмешку для того класса, и это могло быть всем, в чем Вы нуждаетесь. Это было бы довольно легким решением для Вас, так как у Вас, по-видимому, уже есть серия связанных доступных фиктивных объектов jdbc. Обратите внимание, что я предполагаю, что Ваш код jdbc не взорван все вокруг приложения - если это, осуществите рефакторинг!!!
, Если Вы однако используете какую-либо платформу для обработки базы данных (как Шаблонные классы Платформы Spring JDBC) Вы можете и должны дразнить интерфейсное использование класса EasyMock или некоторый другой эквивалент. Тем путем можно иметь всю власть в мире, требуемом для легкой насмешки соединения.
И в последний раз если ничто иное не работает, можно сделать то, что другие уже сказали и используют DBUnit и/или дерби.
У вас есть несколько вариантов:
Иногда необходимо и полезно сделать эти тесты настраиваемыми, чтобы эти тесты выполнялись только при наличии базы данных. Это можно сделать, например, с помощью свойств сборки.
Я предпочитаю использовать EasyMock для тестирование непростого для проверки кода .