【发布时间】:2016-09-04 02:32:40
【问题描述】:
我有这个 javascript 类:
class SearchService {
/*@ngInject*/
constructor($log, $timeout) {
this._log = $log;
this._timeout = $timeout;
}
startSearch(value, updateCallBack) {
this.startSearchPrj(updateCallBack);
}
startSearchPrj(updateCallBack) {
chunkedRequest({
url: 'http://localhost:9090',
method: 'GET',
chunkParser: (rawChunk, prevChunkSuffix = '') => {
return [JSON.parse(rawChunk), prevChunkSuffix];
},
onChunk: (err, parsedChunk) => {
var data = this.cleanResults(parsedChunk)
if(!this.activeChunkId) {
this.activeChunkId = data.resultCategoryId;
}
this.searchResults[data.resultCategoryId] = data;
updateCallBack();
}
});
}
...
}
export default SearchService;
onChunk 有一个箭头函数,我喜欢用 jasmin 为它编写一个单元测试(因为它很快就会变得更加复杂)。我该怎么做?
我尝试重构类并将代码移动到 onChunk 方法中。但是this 得到了另一个含义,我无法访问对象数据。
【问题讨论】:
-
显而易见的答案是将其拆分为自己的函数(不是公共函数)并执行
onChunk: (err, parsedChunk) => onChunk.call(this, err, parsedChunk)或干脆onChunk: onChunk.bind(this),但希望有比这更好的答案! -
您在进行单元测试时遇到什么问题?如果您可以显示单元测试代码,它可能会提供更有用的答案。
-
与单元测试任何其他功能的方式相同?
标签: javascript unit-testing jasmine ecmascript-6