大家好,所以我完全重写了这一点,并包含了我制作的一些代码。通常我会对此进行测试,但是我对如何处理此问题感到很遗憾。
我想从这个功能的单元测试开始。
exports.getMatches = function(callback) {
var url = "http://football-api.comapi/?Action=today&APIKey=" + secrets.APIKey + "&comp_id=1204";
async.waterfall([
function(callback) {
request(url, function (error, response, body) {
if (error) return (error);
var parsedJSON = JSON.parse(body);
var todaysMatches = parsedJSON.matches;
var schedule = new Schedule({
date: dates.today // external module
matches: []
});
_.each(todaysMatches, function (match) {
schedule.matches.push({
match_id: match.match_id,
match_time: match.match_time,
match_localteam_id: match.match_localteam_id,
match_localteam_name: match.match_localteam_name,
match_visitorteam_id: match.match_visitorteam_id,
match_visitorteam_name: match.match_visitorteam_name
});
});
callback(schedule);
});
}
], function(schedule) {
schedule.save(function (err) {
if (err) return (err);
});
done();
});
};
我真的很抱歉没有提供任何进展,因为我只是在这里遇到心理障碍。只有几行代码,但是有太多的东西需要测试,以至于我不确定从哪里开始/在哪里模拟/如何模拟它。
答案 0 :(得分:1)
听起来就像你想要测试request()
而不是你真正的控制器方法。
您的单元测试应该评估传递给list()
回调的内容,并确定它是否已相应地进行了转换。
例如,如果list()
将您的JSON数组转换为HTML列表<ul><li /><li />...</ul>
,则应测试响应/正文输出以确定转换是否成功。
var mockJSON = [{id: 1, name: 'spinach'}];
var expected = '<ul><li data-id="1">spinach</li></ul>';
//...
matchController.list(function (error, response, body) {
// something like this...
expect(body).to.equal(expected);
});