Я новичок в Node.js, Mongoose и тестировании в этой среде. У меня есть следующая схема, объявленная в отдельном файле.Единичный тест с Mongoose
Issue = mongoose.model("Issue", {
identifier: String,
date: String,
url: String,
name: String,
thumbnailURL: String
});
Тогда у меня есть этот метод, который просто возвращает все Issue
экземпляров в коллекции MongoDB.
function issues(request, response) {
response.setHeader('Content-Type', 'text/json');
Issue.find().sort('date').exec(function(error, items) {
if (error) {
response.send(403, {"status": "error", "error:": exception});
}
else {
response.send(200, {"issues": items});
}
});
}
Я получил это далеко с помощью экспериментов, и теперь я хочу, чтобы проверить это, но я столкнулся с проблемой. Как я могу его протестировать, не настраивая соединение MongoDB и т. Д. Я знаю, что может установить, но это интеграционный тест. Я хочу писать тесты, чтобы проверить такие вещи, как:
- функция устанавливается тип содержимого правильно
- функция сортировки по
date
поле - возвращает 403 ли ли ли функция, когда происходит ошибка?
- ... и так далее
Мне интересно посмотреть, как я мог бы реорганизовать свой существующий код, чтобы сделать его более блок проверяемым. Я попытался, возможно, создать вторую функцию, которая вызвана, принимая объекты схемы response
и Item
в качестве параметров, но это не так. У кого-нибудь есть лучшие предложения?
Полностью - Я понимаю, что издевается и как использовать их, но как я могу получить макет в 'вопросов 'метод? Или необходимо извлечь эту логику в другой метод, передавая в схеме «Проблема» как параметр (а затем издеваться над схемой в моем тесте)? –
Я бы вытащил два метода '' 'onSuccess''' и' '' onError''', которые содержат вызовы ответа, а затем установить ожидание того, что каждый из них вызывается, когда '' 'Issue.exec''' заслоняется обратным вызовом с ложным и т. д. – jmcd
Возможно, вы найдете это полезным для других частей вашего вопроса: http://stackoverflow.com/questions/8021956/node-js-mock-http-request-and-response – jmcd