Проверка Кредитной карты с JQuery

Поблочное тестирование, примерно разговор, тестируя биты Вашего кода в изоляции с тестовым кодом. Прямые преимущества, которые приходят на ум:

  • Запущение тестов становится, автоматизируют - способный и повторяемый
  • , можно протестировать на намного большем детализированном уровне, чем тестирование "укажи и выбери" с помощью Примечания GUI

, которое, если тестовый код пишет в файл, открывает соединение с базой данных или делает что-то по сети, это более соответственно категоризировано как интеграционный тест. Интеграционные тесты являются хорошей вещью, но не должны быть перепутаны с модульными тестами. Код модульного теста должен быть коротким, сладким и быстрым для выполнения.

Другой способ посмотреть на поблочное тестирование состоит в том, что Вы пишете тесты сначала. Это известно как Разработка через тестирование (TDD, если коротко). TDD приносит дополнительные преимущества:

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

, Если Вы не делаете поблочного тестирования теперь, я рекомендую начать на нем. Получите хорошую книгу, практически любая xUnit-книга сделает, потому что понятия очень передаваемы между ними.

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

<час>

Редактирование: Одно неправильное представление приходит на ум, хотя я не уверен, распространено ли это настолько. Я услышал, что менеджер проектов говорит, что модульные тесты заставили команду записать весь код дважды. Если это стили тот путь, ну, в общем, Вы делаете его неправильно. Не только делает записи, тесты обычно ускоряют разработку, но и это также дает Вам удобное, "теперь я сделан" индикатор, который Вы не имели бы иначе.

5
задан John Conde 16 November 2011 в 06:09
поделиться

2 ответа

http://en.wikipedia.org/wiki/Luhn_algorithm

Вы можете минимизировать это ниже в очень мало места в вашем коде.

function isCreditCard( CC )
 {                        
      if (CC.length > 19)
           return (false);

      sum = 0; mul = 1; l = CC.length;
      for (i = 0; i < l; i++)
      {
           digit = CC.substring(l-i-1,l-i);
           tproduct = parseInt(digit ,10)*mul;
           if (tproduct >= 10)
                sum += (tproduct % 10) + 1;
           else
                sum += tproduct;
           if (mul == 1)
                mul++;
           else
                mul--;
      }
      if ((sum % 10) == 0)
           return (true);
      else
           return (false);
 }
11
ответ дан 18 December 2019 в 14:47
поделиться

Если вы хотите быть уверенным, что это действительный номер карты, вам нужно будет проверить гораздо больше, чем цифра Луна.

Цифра Луна предназначена только для проверки ошибок транспонирования, и может быть легко подделана числами, например, 22222222222222222

Следует проверить первые шесть цифр номера карты. Эти цифры известны как идентификационный номер эмитента и могут использоваться, чтобы гарантировать, что номер находится в пределах распознанного диапазона. К сожалению, вам будет сложно найти исчерпывающий список IIN, не в последнюю очередь потому, что эмитенты постоянно добавляют и удаляют диапазоны. В Википедии есть очень простой обзор: Номер банковской карты

Если вы можете определить тип карты по ИИН, вы также можете попытаться проверить длину номера.

Если у вас нет очень хорошая причина,

2
ответ дан 18 December 2019 в 14:47
поделиться
Другие вопросы по тегам:

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