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

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

Ципресс вам омогућава да пишете свеобухватне тестове који обухватају читав спектар тока посла ваше веб апликације.

Почетак рада са тестирањем АПИ-ја помоћу Ципресс-а

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

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

instagram viewer

Ципресс је одличан алат за тестирање корисничког интерфејса, који користе неки од популарни ЈаваСцрипт оквири. Његова способност да прави и тестира ХТТП захтеве чини га подједнако ефикасним у тестирању АПИ-ја.

То ради користећи Ноде.јс као свој механизам за прављење ХТТП захтева и руковање њиховим одговорима.

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

Направите Екпресс.јс РЕСТ АПИ

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

npm install cors

Затим додајте Ципресс пакет свом пројекту:

npm install cypress --save-dev

Коначно, ажурирајте свој пацкаге.јсон датотеку која укључује ову тест скрипту:

"test": "npx cypress open"

Дефинишите АПИ контролере

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

У основном директоријуму фасцикле вашег пројекта, креирајте а цонтроллерс/усерЦонтроллерс.јс датотеку и додајте следећи код.

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

const users = [];

exports.registerUser = async (req, res) => {
const { username, password } = req.body;

try {
const newUser = { username, password };
users.push(newUser);
res.status(201).send({ message: 'User registered successfully' });
} catch (error) {
console.error(error);
res.status(500).send({ message: 'An error occurred!!' });
}
};

Додајте другу функцију -гетУсерс—да преузмете корисничке податке из низа и вратите их као ЈСОН одговор.

exports.getUsers = async (req, res) => {
try {
res.json(users);
} catch (error) {
console.error(error);
res.status(500).send({ message: 'An error occurred!!' });
}
};

На крају, такође можете симулирати покушаје пријављивања. У истој датотеци додајте овај код да бисте проверили да ли се дато корисничко име и лозинка подударају са било којим корисничким подацима у корисника низ:

exports.loginUser = async (req, res) => {
const { username, password } = req.body;

try {
const user = users.find((u) =>
u.username username && u.password password);

if (user) {
res.status(200).send({ message: 'Login successful' });
} else {
res.status(401).send({ message: 'Invalid credentials' });
}
} catch (error) {
console.error(error);
res.status(500).send({ message: 'An error occurred!!' });
}
};

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

Да бисте дефинисали руте за свој Екпресс РЕСТ АПИ, креирајте нови роутес/усерРоутес.јс датотеку у основном директоријуму и додајте му овај код:

const express = require('express');
const router = express.Router();
const userControllers = require('../controllers/userControllers');

const baseURL = '/v1/api/';

router.post(baseURL + 'register', userControllers.registerUser);
router.get(baseURL + 'users', userControllers.getUsers);
router.post(baseURL + 'login', userControllers.loginUser);

module.exports = router;

Ажурирајте датотеку Сервер.јс

Ажурирајте сервер.јс датотеку да бисте конфигурисали АПИ на следећи начин:

const express = require('express');
const cors = require('cors');
const app = express();
const port = 5000;

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cors());

const userRoutes = require('./routes/userRoutes');
app.use('/', userRoutes);

app.listen(port, () => {
console.log(`Server is listening at http://localhost:${port}`);
});

module.exports = app;

Подесите окружење за тестирање

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

node server.js

Затим покрените команду тест скрипте у посебном терминалу:

npm run test

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

Затим кликните Настави да додате конфигурационе датотеке Ципресс.

Када се процес подешавања заврши, требало би да видите нову фасциклу Ципресс у свом пројекту. Чемпрес ће такође додати а ципресс.цонфиг.јс датотеку која садржи подешавања конфигурације за ваше тестове.

Само напред и ажурирајте ову датотеку тако да садржи УРЛ адресу вашег сервера на следећи начин:

const { defineConfig } = require("cypress");

module.exports = defineConfig({
chromeWebSecurity: false,
e2e: {
baseUrl: 'http://localhost: 5000',
setupNodeEvents(on, config) {
},
},
});

Напишите тест случајеве

Сада сте спремни да напишете неке тестне случајеве. Прво изаберите претраживач у којем ће се Ципресс покренути да бисте покренули тестове из опција доступних на Ципресс клијенту.

Затим кликните на Креирајте нову спецификацију дугме за креирање тестне датотеке и наведите име. Затим кликните Креирајте спец.

Сада, отворите чемпрес/фикстурес/екампле.јсон датотеку и ажурирајте њен садржај следећим корисничким акредитивима. Фиктурес су датотеке које садрже статичке тестне податке које можете користити у тест случајевима.

{
"username": "testuser",
"password": "password123"
}

Чемпрес пружа а ци.рекуест метод за упућивање ХТТП захтева веб серверу. Можете га користити за тестирање различитих типова ХТТП крајњих тачака које управљају различитим операцијама укључујући ГЕТ, ПОСТ, ПУТ и ДЕЛЕТЕ.

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

Отвори ципресс/е2е/усер.роутес.спец.ци.јс датотеку и ажурирајте њен садржај следећим кодом.

describe('User Routes', () => {
it('registers a new user', () => {
cy.fixture('example').then((testUser) => {
cy.request({
method: 'POST',
url: `${baseUrl}/v1/api/register`,
body: testUser,
}).then((response) => {
expect(response.status).to.eq(201);
expect(response.body.message).to.eq('User registered successfully');
});
});
});

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

Вреди напоменути да синтакса за Ципресс тестове веома личи на синтаксу која се користи у Моцха тестовима, коју је Ципресс усвојио.

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

 it('gets users data and the username matches test data', () => {
cy.fixture('example').then((expectedUserData) => {
cy.request({
method: 'GET',
url: `${baseUrl}/v1/api/users`,
}).then((response) => {
expect(response.status).to.eq(200);
const username = response.body[0].username;
expect(username).to.eq(expectedUserData.username);
});
});
});

На крају, укључите тестни случај који ће тестирати крајњу тачку за пријаву и потврдити да је статус одговора 200, што указује на успешан покушај пријаве.

 it('logs in a user', () => { 
cy.fixture('example').then((loginData) => {
cy.request({
method: 'POST',
url: `${baseUrl}/v1/api/login`,
body: loginData,
}).then((response) => {
expect(response.status).to.eq(200);
});
});
});
});

Да бисте покренули тестове, вратите се на верзију претраживача којом управља Ципресс и изаберите конкретну датотеку за тестирање коју желите да покренете.

Ципресс тест тркач ће покренути тестове и забележити њихове резултате, показујући статус пролаза или неуспеха за сваки тест случај.

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

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

Тестирање вашег целокупног веб искуства помоћу Ципресс

Ципресс је фантастичан алат за тестирање веб апликација, који неприметно покрива тестове за фронт-енд и бацк-енд.

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