Javascript 如何通过Jasmine在JS中测试(单元测试)箭头函数?

Javascript 如何通过Jasmine在JS中测试(单元测试)箭头函数?,javascript,jasmine,Javascript,Jasmine,我已经完成了一个小项目“Notes”,现在尝试使用Jasmine进行测试。但由于这是我第一个使用模块风格和模仿私有函数的脚本,我不明白如何测试脚本的业务逻辑,因为Jasmine根本看不到我的arrow函数。请帮我开始考试 //eslint禁用下一行函数名 常量NotesList=((函数(){ const NOTE_TITLE='notesList'; const initNotesList=()=>{ if(localStorage.getItem(注意标题)){ 返回JSON.parse(

我已经完成了一个小项目“Notes”,现在尝试使用Jasmine进行测试。但由于这是我第一个使用模块风格和模仿私有函数的脚本,我不明白如何测试脚本的业务逻辑,因为Jasmine根本看不到我的arrow函数。请帮我开始考试

//eslint禁用下一行函数名
常量NotesList=((函数(){
const NOTE_TITLE='notesList';
const initNotesList=()=>{
if(localStorage.getItem(注意标题)){
返回JSON.parse(localStorage.getItem(NOTE_TITLE));
}
返回[];
};
让notesList=initNotesList();
const saveData=(数据)=>{
notesList=[…数据];
setItem(NOTE_TITLE,JSON.stringify(notesList));
};
常量添加注释=(注释)=>{
if(注释列表包括(注释)){
返回{
完成:错误,
错误:“注释已在注释列表中”,
};
}
saveData([…notesList,note]);
返回{
是的,
};
};
const removeNote=(注意)=>{
const filteredNotesList=notesList.filter((项)=>item!==note);
if(filteredNotesList.length==notesList.length){
返回{
完成:错误,
错误:“注释不存在”,
};
}
保存数据(filteredNotesList);
返回{done:true};
};
返回{
getNotesList(){
返回票据列表;
},
附加项(项目){
退货通知单(项目);
},
移除项目(项目){
退货通知单(项目);
},
};
})());
常量样式={
显示:“d-block”,
};
常数UI={
noteValue:document.querySelector(“#note value”),
addNote:document.querySelector(“#addNote”),
removeNote:document.querySelector(“#删除注释”),
errorMessage:document.querySelector(“#错误消息”),
list:document.querySelector(“#list”),
renderNotesList(){
这个.clearNotesList();
NotesList.getNotesList().forEach((项)=>{
const li=document.createElement('li');
li.innerText=项目;
this.list.append(li);
});
},
clearNotesList(){
this.list.innerText='';
},
HandlenotesResponse(结果){
如果(结果完成){
this.noteValue.value='';
this.errorMessage.classList.remove(STYLES.show);
this.renderNotesList();
}否则{
this.errorMessage.innerText=result.error;
this.errorMessage.classList.add(STYLES.show);
}
},
};
UI.addNote.addEventListener('单击',(事件)=>{
event.preventDefault();
const result=NotesList.addItem(UI.noteValue.value);
UI.手部反应(结果);
});
UI.removente.addEventListener('单击',(事件)=>{
event.preventDefault();
const result=NotesList.removietem(UI.noteValue.value);
UI.手部反应(结果);
});
UI.renderNotesList()
body{font-family:“Roboto Condensed”,无衬线;字体大小:16px}页眉{background:none}。导航链接{font-size:20px}。容器{max-width:1200px;背景图像:url(../images/blue-snow.png)}。容器页眉{max-width:1200px}页脚{显示:内联;右填充:5px;底部填充:5px}ul li-a:悬停{变换:旋转(1turn);变换:0.5s轻松}html{滚动行为:平滑}

家庭作业1
笔记 添加注释 去除 笔记
  • 博洛廷尼基塔公司,2019-2020年
    FE-2 课程
    您到底想测试哪些您还不能测试的?已经公开了
    getNotesList
    addItem
    removeItem
    方法。只需直接测试公开的公共函数即可。这将间接测试所有实现细节

    现在,可能有一些代码无法通过这种方式进行测试,或者测试起来非常困难。在这种情况下,您应该重构代码,使其更易于测试

    例如,
    initNotesList
    函数不可直接测试。您可能希望将其作为公共函数公开(即-将其添加到return语句中),并针对其编写一些单元测试。我还将创建并公开一个
    clearNotesList
    函数,以帮助设置和取消测试


    但是除此之外,没有什么可以做的。单元测试没有什么神奇之处。你只需要创建清晰、简单的代码,并公开适当的部分,以使测试变得容易。

    你到底想测试什么,而你还不能测试呢?
    getNotesList
    addItem
    removietem
    方法已经被使用了只需直接测试公开的公共函数。这将间接测试所有实现细节

    现在,可能有一些代码无法通过这种方式进行测试,或者测试起来非常困难。在这种情况下,您应该重构代码,使其更易于测试

    例如,
    initNotesList
    函数不可直接测试。您可能希望将其公开为publi