Хостовање АПИ-ја носи одговорност да се увери да он функционише. Не постоји бољи или лакши начин за то од аутоматског тестирања помоћу алата као што је Моцха.

Савремени развој софтвера одлично користи АПИ-је. Они служе као кључна веза између апликација на страни клијента и позадинских апликација, као и између различитих интерних или екстерних апликација.

АПИ-ји омогућавају несметану комуникацију и размену података, омогућавајући софтверским компонентама беспрекорну интеракцију једна са другом. Обезбеђивање поузданости, функционалности и перформанси ових АПИ-ја је од највеће важности за пружање беспрекорног корисничког искуства и одржавање целокупног интегритета система.

Због тога је важно да темељно тестирате своје АПИ-је да бисте означили и исправили грешке током развоја како бисте спречили потенцијалне системске грешке у производним окружењима.

Тестирање Ноде.јс АПИ-ја користећи Моцха, Цхаи и Цхаи-ХТТП

Мока је широко коришћен оквир за тестирање који је компатибилан са различитим ЈаваСцрипт оквири

. Једна од његових кључних карактеристика је флексибилан покретач тестова који поједностављује процес управљања и ефикасног извршавања тест случајева.

Такође подржава различите стилове тестирања, укључујући синхроно и асинхроно тестирање, омогућавајући широк спектар сценарија тестирања.

С друге стране, Цхаи и Цхаи-ХТТП су библиотеке тврдњи које можете користити у комбинацији са Моцха. Цхаи пружа широк спектар изражајних и читљивих интерфејса за тврдње као што су требало, очекивати и тврдити. Док, Цхаи-ХТТП, проширење за Цхаи, пружа интерфејс посебно дизајниран за тестирање ХТТП захтева и потврђивање њихових одговора.

Коришћењем Моцха у комбинацији са Цхаи и Цхаи-ХТТП, можете ефикасно тестирати АПИ-је. Ток рада тестирања укључује:

  • Прављење ХТТП захтева ка наведеним крајњим тачкама АПИ-ја.
  • Дефинисање очекиваних одговора.
  • Провера примљених података из наведеног извора, ХТТП статусних кодова и још много тога.

Такође можете симулирати сценарије тестирања грешке АПИ-ја који се могу појавити у таквим ситуацијама и које акције треба да се покрену у случају да се догоде.

Код овог пројекта можете пронаћи у њему ГитХуб спремиште.

Подесите Екпресс.јс пројекат и МонгоДБ базу података

Започети, креирајте експрес веб сервер, и инсталирајте ове пакете:

нпм инсталл цорс дотенв монгоосе монгодб

Следећи, креирајте МонгоДБ базу података или конфигуришите МонгоДБ кластер у облаку. Затим копирајте УРЛ везе са базом података, креирајте а .енв датотеку у основном директоријуму и налепите у низ везе за базу података:

ЦОННЕЦТИОН_СТРИНГ="стринг везе"

Да бисте завршили процес подешавања, потребно је да конфигуришете везу са базом података и дефинишете моделе података за ваше корисничке податке. Погледајте код у ГитХуб спремишту овог пројекта да бисте:

  • Конфигуришите везу са базом података, у утилс/дб.јс.
  • Дефинишите шему корисничких података у модели/усер.модел.јс.

Дефинишите функције руковаоца за АПИ руте

Функције контролера ће управљати додавањем и преузимањем корисничких података у бази података. Да бисте осигурали функционалност ових функција руковаоца, тестираћете да ли могу успешно да постављају и преузимају податке из базе података.

У основном директоријуму креирајте а цонтроллерс/усерЦонтроллерс.јс датотеку и додајте следећи код:

конст Корисник = захтевају('../моделс/усер.модел');

екпортс.регистерУсер = асинц (рек, рес) => {
конст { корисничко име, лозинка } = рек.боди;

покушати {
чекати Усер.цреате({ корисничко име, лозинка});
рес.статус(201).сенд({ порука: 'Корисник је успешно регистрован' });
} улов (грешка) {
конзола.лог (грешка);
рес.статус(500).сенд({ порука: 'Дошло је до грешке!! ' });
}
};

екпортс.гетУсерс = асинц (рек, рес) => {
покушати {
конст корисници = чекати Усер.финд({});
рес.јсон (корисници);
} улов (грешка) {
конзола.лог (грешка);
рес.статус(500).сенд({ порука: 'Дошло је до грешке!!' });
}
};

Дефинишите АПИ руте

Створити нова роутес/усерРоутес.јс датотеку у основном директоријуму и додајте следећи код.

конст екпресс = захтевају('изразити');
конст рутер = експрес. Роутер();
конст усерЦонтроллерс = захтевају('../цонтроллерс/усерЦонтроллерс');

роутер.пост('/апи/регистер', усерЦонтроллерс.регистерУсер);
роутер.гет('/апи/усерс', усерЦонтроллерс.гетУсерс);
модул.екпортс = рутер;

Дефинишите улазну тачку вашег сервера

Ажурирајте своје сервер.јс датотеку са следећим кодом.

конст екпресс = захтевају('изразити');
конст цорс = захтевају('цорс');
конст апп = екпресс();
конст порт = 5000;
захтевају('дотенв').цонфиг();
конст цоннецтДБ = захтевају('./утилс/дб');

цоннецтДБ();

апп.усе (екпресс.јсон());
апп.усе (екпресс.урленцодед({ продужени: истина }));
апп.усе (цорс());

конст усерРоутес = захтевају('./роутес/усерРоутес');
апп.усе('/', усерРоутес);

апп.листен (порт, () => {
конзола.Пријава(`Сервер слуша http://localhost:${порт}`);
});

модул.екпортс = апп;

Напишите и извршите тест случајеве помоћу Моцха

Са корисничким АПИ-јем на месту, наставите и конфигуришите окружење за тестирање. Прво, инсталирајте ове пакете као дев зависности.

нпм инсталл моцха цхаи цхаи-хттп --саве-дев

Сада додајте следећу скрипту у датотеку пацкаге.јсон.

"скрипте": {
"тест": "моцха --тимеоут 10000"
},

Ова команда ће извршити тест случајеве—додавање својства временског ограничења са одговарајућом вредношћу омогућава вам да контролишете максимално дозвољено време за извршавање појединачних тест случајева.

Ово може бити корисно за спречавање да се тестови изводе неограничено или да се заврше пребрзо пре него што се тестни случајеви заврше.

Тестирајте крајње тачке АПИ-ја

У основном директоријуму креирајте нову фасциклу и дајте јој име тест. Унутар ове фасцикле направите нову усер.тестс.јс датотеку и додајте следећи код за ПОСТ тест крајње тачке.

конст цхаи = захтевају('цхаи');
конст цхаиХттп = захтевају('цхаи-хттп');
конст апп = захтевају('../сервер');

цхаи.усе (цхаиХттп);
конст очекивати = цхаи.екпецт;

описати ('Кориснички АПИ', () => {
описати ('ПОСТ /апи/регистер', () => {
то('треба да се бави регистрацијом корисника', (готово) => {
цхаи.рекуест (апликација)
.пошта('/апи/регистер')
.сенд({ корисничко име: 'тестУсер', Лозинка: 'тестпассворд' })
.крај((ерр, рес) => {
ако (ерр) {
очекивати (рес).да.имам.статус(500);
очекивати (рес.боди).то.хаве.проперти('порука').то је једнако('Дошло је до грешке!!');
} друго {
очекивати (рес).да.имам.статус(201);
очекивати (рес.боди).то.хаве.проперти('порука').једнако('Корисник је успешно регистрован');
}

Готово();
});
});
});
});

Овај код дефинише тестни случај користећи Цхаи и Цхаи ХТТП за тестирање функционалности регистрације корисника корисничког АПИ-ја.

Он шаље ПОСТ захтев наведеној крајњој тачки и даје тврдње о очекиваном АПИ одговору, проверавајући да ли је функционалност регистрације корисника била успешна или је дошло до грешке.

Ево поделе главних компоненти тестног случаја:

  • очекивати -Овај објекат вам омогућава да користите Цхаи методе тврдње да бисте дали тврдње о очекиваном одговору од АПИ-ја.
  • описати - Описује повезане тест случајеве заједно, у овом случају, тестове који се односе на Кориснички АПИ. Угнежђени описи блокирају даље групе повезаних тест случајева заједно, у овом случају, ПОСТ /апи/регистер. Ово помаже да се организују тест случајеви који се посебно односе на одређену функционалност.
  • то - Ова функција описује очекивано понашање крајње тачке АПИ-ја.
  • крај - Ова функција шаље захтев и обезбеђује функцију повратног позива за руковање одговором. Функција повратног позива изводи тврдње користећи очекивати функцију за проверу одговора примљеног од АПИ-ја.
  • Готово - Ова функција се покреће да означи крај тестног случаја.

Коначно, додајте код за ГЕТ тест крајње тачке одмах након ПОСТ тест случаја крајње тачке.

описати ('ГЕТ /апи/усерс', () => {
то('треба да преузме све корисничке податке', (готово) => {
цхаи.рекуест (апликација)
.добити('/апи/усерс')
.крај((ерр, рес) => {
ако (ерр) {
очекивати (рес).да.имам.статус(500);
очекивати (рес.боди).то.хаве.проперти('порука').то је једнако(„Дошло је до грешке при преузимању корисничких података“);
} друго {
очекивати (рес).да.имам.статус(200);
очекивати (рес.боди).то.бе.ан('низ');
}

Готово();
});
});
});

Само напред и покрените тест скрипту на свом терминалу да бисте извршили два тестна случаја.

нпм тест

Ако извршавање тест случајева не наиђе на грешке, требало би да видите сличан излаз који показује да су тестови успешно прошли.

До грешака у тестирању може доћи због различитих разлога, као што су проблеми са мрежном везом током ХТТП захтева ка бази података, недостајући потребни подаци, логичке грешке и други проблеми.

Моцха ради добар посао у идентификацији и истицању таквих грешака, пружајући јасне и детаљне извештаје о тестирању у евиденцијама приказаним на прозору терминала. Ово вам омогућава да лако идентификујете и дијагностикујете специфичне проблеме који су изазвали неуспехе теста.

Моцха вам не даје изговор да не тестирате своје АПИ-је

Док ручно тестирање функционалности ваших АПИ-ја коришћењем алата као што је Постман је валидно тестирање приступ, коришћење Моцха и других оквира за тестирање за аутоматизовано тестирање доводи до следећег ниво.

Помоћу ових алата за тестирање можете брзо и лако да аутоматизујете тестове да бисте покрили широк спектар сценарија и ивичних случајева. Ово вам омогућава да брзо откријете грешке и решите их пре него што примените своје АПИ-је, обезбеђујући да испоручујете висококвалитетни софтвер у производњу.