【发布时间】:2019-02-04 18:24:20
【问题描述】:
export class YoutubeService {
getTrendingVideos(country) {
var params = {
part: 'snippet',
chart: 'mostPopular',
regionCode: country, // should be replaced with country code from countryList
maxResults: '24',
key: config.youtubeApi.key
};
let result = [];
let promises = [];
return axios.get('/', {params}).then(function(res){
result = res.data.items;
for (var i = 0; i < result.length; i++) {
result[i] = {
id: result[i].id,
title: result[i].snippet.title,
thumbnail: result[i].snippet.thumbnails.high.url,
publishedAt: moment(result[i].snippet.publishedAt).fromNow()
};
promises.push(YoutubeService.getVideoDetails(result[i]));
}
return Promise.all(promises);
});
}
static getVideoDetails(video) {
let params = {
part: 'statistics',
id: video.id,
key: config.youtubeApi.key
};
return axios.get('/', {params}).then(function(res) {
let result = res.data;
video.viewCount = result['items'][0].statistics.viewCount;
video.likeCount = result['items'][0].statistics.likeCount;
return video;
});
}
}
我不熟悉使用 mocha 和 chai 进行测试,尤其是 promise。如何使用 chai 断言测试这两个函数。 我应该如何对这两个功能进行单元测试 提前致谢。
【问题讨论】:
-
我个人首先会提取与类不直接相关的代码(例如,
params除了单个属性外始终相同),重构更多(例如,创建视频细节结果请求道具可以独立),使用map之类的东西,构建请求道具数组,测试道具创建者和地图功能,然后做出承诺等。除此之外,我'我很确定我已经看过多个关于测试承诺代码的教程——但我认为如果你提到你遇到的具体问题会很有帮助。
标签: javascript express promise mocha.js chai