Добрый день!
Столкнулся с таким вопросом: как будет более правильно и красиво тестировать плагинацию в mocha.js?
Сейчас просто генерирую тесты через forEach loop, и прогоняю их, но мне кажется что это не самый красивый вариант:
[30, 18, 378, -9000].forEach(function (userLimit) {
it(`should response valid chunked (limit: ${userLimit}) data `, async function () {
const agent = request.agent(app);
await agent
.post('/rest/auth')
.send({
username,
password
});
let users = [];
let offset = 0;
while (offset <= totalUserCount) {
await agent
.get('/rest/users')
.query({
limit: userLimit,
offset: offset
})
.expect('Content-Type', /json/)
.expect(200)
.expect((res) => {
const {body} = res;
users = users.concat(body.data);
if (userLimit < 1) {
offset += 1;
} else if (userLimit > 100) {
offset += 100;
} else {
offset += userLimit;
}
});
}
expect(users).have.lengthOf(totalUserCount);
});
});
Если цикл запихнуть в тело, тогда тест будет проходить очень долго. А моком заткнуть не получится потому-что от части тестируется работа с базой.
Как в таком случае будет более красиво переписать этот код, учитывая что есть почти на 90% повторяющийся тест только без плагинации, что-бы проверить как ведет себя REST без переданных параметров?