Расширение идеи Томаша Зато. Tomas Array.prototype.compare должен быть infact, называемый Array.prototype.compareIdentical.
Он проходит:
[1, 2, [3, 4]].compareIdentical ([1, 2, [3, 2]]) === false;
[1, "2,3"].compareIdentical ([1, 2, 3]) === false;
[1, 2, [3, 4]].compareIdentical ([1, 2, [3, 4]]) === true;
[1, 2, 1, 2].compareIdentical ([1, 2, 1, 2]) === true;
Но не работает:
[[1, 2, [3, 2]],1, 2, [3, 2]].compareIdentical([1, 2, [3, 2],[1, 2, [3, 2]]])
Здесь лучше (на мой взгляд) версия:
Array.prototype.compare = function (array) {
// if the other array is a falsy value, return
if (!array)
return false;
// compare lengths - can save a lot of time
if (this.length != array.length)
return false;
this.sort();
array.sort();
for (var i = 0; i < this.length; i++) {
// Check if we have nested arrays
if (this[i] instanceof Array && array[i] instanceof Array) {
// recurse into the nested arrays
if (!this[i].compare(array[i]))
return false;
}
else if (this[i] != array[i]) {
// Warning - two different object instances will never be equal: {x:20} != {x:20}
return false;
}
}
return true;
}
Я использовал обоих PHPUnit & SimpleTest и я нашли SimpleTest быть легче использовать.
, Насколько TDD идет, у меня не было большой удачи с ним в самом чистом смысле. Я думаю, что это - главным образом проблема времени/дисциплины с моей стороны все же.
Добавляющие тесты после факта были несколько полезны, но мои любимые вещи сделать использовать, пишут тесты SimpleTest, которые тестируют на определенные ошибки, которые я должен исправить. Это делает очень легким проверить, что вещи на самом деле починены и остаются фиксированными.
Я настоятельно рекомендую Разработка через тестирование Kent Beck (ISBN-10: 0321146530) . Это не было записано специально для PHP, но понятия там и должны быть легко переводимы к PHP.
PHPUnit является стандартом, но это является иногда также подавляющим, поэтому если Вы находите его слишком сложным, проверяете phpt для запущения Вас. Это очень, очень легко к тестам записи в нем. Никакой brainer для любого программиста.
И отвечать на Ваш вопрос TDD - я не уверен, используется ли TDD широко в пространстве PHP. Я вижу, что быстрая разработка приложений и TDD несколько сталкиваются (строго, по моему скромному мнению). TDD требует, чтобы у Вас было полное изображение того, что Вы создаете, и Вы пишете свои тесты впереди и затем реализуете код для создания тестовой передачи.
Так, например, то, что мы делаем вместо этого, должно записать много тестов, когда мы сделаны. Это - не всегда лучший подход, потому что Вы иногда заканчиваете с поддельными тестами, которые передают, но не действительно полезны, но по крайней мере это - что-то, на чем можно подробно остановиться. Внутренне мы продолжаем тесты и в основном пишем тест для каждой ошибки, которую мы находим. Это - то, как это становится более твердым.
SimpleTest является большой системой. Я начал с ним приблизительно 5 месяцев назад, никогда услышав о TDD, и SimpleTest легко выучить лишь все еще мощный. Что касается ресурсов, я в настоящее время читаю TDD Примером Kent Beck, и это хорошо.
Необходимо изучить PHPUnit, это смотрит в значительной степени как nUnit.
Я лично предпочитаю SimpleTest. Существует исполнитель тестов командной строки и веб-исполнитель тестов, и существует даже плагин Eclipse , чтобы позволить Вам выполнить модульные тесты от самого IDE. Я нашел, что Зенд к соединению PHPUnit намного тяжелее получил работу, особенно с отладчиком.
способ, которым мы используем внутренний SimpleTest, с непрерывная интеграция сценарий, который мы записали сами. Каждый раз, когда мы регистрируемся в функции к SVN, мы включаем модульные тесты. Каждый час или так, сценарий CI выполняет и называет Сценарий PHP командной строки, который выполняет все наши модульные тесты. Если какое-либо повреждение, я получаю электронное письмо. Это был отличный способ уменьшить ошибки в наших системах.
Однако можно столь же легко использовать что-то как Phing для запущения тестов автоматически, или на задании крона или с рычагом регистрации SVN.
На самом деле, если Вы хотите связаться со мной непосредственно для дальнейшей справки, можно добраться до меня через мою информацию о профиле о ТАК. Я хотел бы выручить Вас.