Разработка через тестирование в PHP

Расширение идеи Томаша Зато. 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;
}

http://jsfiddle.net/igos/bcfCY/

43
задан GloryFish 6 September 2008 в 03:48
поделиться

6 ответов

Я использовал обоих PHPUnit & SimpleTest и я нашли SimpleTest быть легче использовать.

, Насколько TDD идет, у меня не было большой удачи с ним в самом чистом смысле. Я думаю, что это - главным образом проблема времени/дисциплины с моей стороны все же.

Добавляющие тесты после факта были несколько полезны, но мои любимые вещи сделать использовать, пишут тесты SimpleTest, которые тестируют на определенные ошибки, которые я должен исправить. Это делает очень легким проверить, что вещи на самом деле починены и остаются фиксированными.

40
ответ дан Mark Biek 23 September 2019 в 12:54
поделиться

Я настоятельно рекомендую Разработка через тестирование Kent Beck (ISBN-10: 0321146530) . Это не было записано специально для PHP, но понятия там и должны быть легко переводимы к PHP.

11
ответ дан Mike H 23 September 2019 в 12:54
поделиться

PHPUnit является стандартом, но это является иногда также подавляющим, поэтому если Вы находите его слишком сложным, проверяете phpt для запущения Вас. Это очень, очень легко к тестам записи в нем. Никакой brainer для любого программиста.

И отвечать на Ваш вопрос TDD - я не уверен, используется ли TDD широко в пространстве PHP. Я вижу, что быстрая разработка приложений и TDD несколько сталкиваются (строго, по моему скромному мнению). TDD требует, чтобы у Вас было полное изображение того, что Вы создаете, и Вы пишете свои тесты впереди и затем реализуете код для создания тестовой передачи.

Так, например, то, что мы делаем вместо этого, должно записать много тестов, когда мы сделаны. Это - не всегда лучший подход, потому что Вы иногда заканчиваете с поддельными тестами, которые передают, но не действительно полезны, но по крайней мере это - что-то, на чем можно подробно остановиться. Внутренне мы продолжаем тесты и в основном пишем тест для каждой ошибки, которую мы находим. Это - то, как это становится более твердым.

9
ответ дан Till 23 September 2019 в 12:54
поделиться

SimpleTest является большой системой. Я начал с ним приблизительно 5 месяцев назад, никогда услышав о TDD, и SimpleTest легко выучить лишь все еще мощный. Что касается ресурсов, я в настоящее время читаю TDD Примером Kent Beck, и это хорошо.

2
ответ дан MattBelanger 23 September 2019 в 12:54
поделиться

Необходимо изучить PHPUnit, это смотрит в значительной степени как nUnit.

1
ответ дан Eric Hogue 23 September 2019 в 12:54
поделиться

Я лично предпочитаю SimpleTest. Существует исполнитель тестов командной строки и веб-исполнитель тестов, и существует даже плагин Eclipse , чтобы позволить Вам выполнить модульные тесты от самого IDE. Я нашел, что Зенд к соединению PHPUnit намного тяжелее получил работу, особенно с отладчиком.

способ, которым мы используем внутренний SimpleTest, с непрерывная интеграция сценарий, который мы записали сами. Каждый раз, когда мы регистрируемся в функции к SVN, мы включаем модульные тесты. Каждый час или так, сценарий CI выполняет и называет Сценарий PHP командной строки, который выполняет все наши модульные тесты. Если какое-либо повреждение, я получаю электронное письмо. Это был отличный способ уменьшить ошибки в наших системах.

Однако можно столь же легко использовать что-то как Phing для запущения тестов автоматически, или на задании крона или с рычагом регистрации SVN.

На самом деле, если Вы хотите связаться со мной непосредственно для дальнейшей справки, можно добраться до меня через мою информацию о профиле о ТАК. Я хотел бы выручить Вас.

4
ответ дан Sam McAfee 23 September 2019 в 12:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: