Javascript 我如何为这个包含json文件下载的react js代码编写单元测试?

Javascript 我如何为这个包含json文件下载的react js代码编写单元测试?,javascript,reactjs,Javascript,Reactjs,我想做的是为这个组件创建一个单元测试。我尝试过模拟点击事件,不幸的是失败了,还尝试过重新创建所需的参数并绕过点击,也没有运气。想知道从哪里开始测试?是否应该仅仅为了测试而更改代码 这是一种观点: export default function SaveAsJSON({data,save}){ return <div className="btn container"> <span className=&quo

我想做的是为这个组件创建一个单元测试。我尝试过模拟点击事件,不幸的是失败了,还尝试过重新创建所需的参数并绕过点击,也没有运气。想知道从哪里开始测试?是否应该仅仅为了测试而更改代码

这是一种观点:

export default function SaveAsJSON({data,save}){

    return <div className="btn container">
        <span
            className="col-8 text-danger"
            onClick={(e) => save(window.prompt("Enter file name: ") + '.json',
                JSON.stringify( data, null, "\t").replace(/\\n/g, '\r\n'))}
        >Save list
        </span>
        <Save/>
    </div>
}
导出默认函数SaveAsJSON({data,save}){
返回
保存(window.prompt(“输入文件名:”)+“.json”,
JSON.stringify(数据,null,“\t”).replace(/\\n/g,“\r\n”))}
>保存列表
}
这是演示者:

function SaveAsJSONPresenter() {
    const lst = useSelector(state => state.list.elements)


    const saveFile = (filename, jsonToWrite) => {

        const blob = new Blob([jsonToWrite], { type: "text/json" });
        const link = document.createElement("a");

        link.download = filename;
        link.href = window.URL.createObjectURL(blob);
        link.dataset.downloadurl = ["text/json", link.download, link.href].join(":");

        const evt = new MouseEvent("click", {
            view: window,
            bubbles: true,
            cancelable: true,
        });

        link.dispatchEvent(evt);
        link.remove()
    };

    return <SaveAsJSON data={lst} save={saveFile}/>
}

export default SaveAsJSONPresenter;
函数SaveAsJSONPresenter(){ const lst=useSelector(state=>state.list.elements) const saveFile=(文件名,jsonToWrite)=>{ constblob=newblob([jsonToWrite],{type:“text/json”}); const link=document.createElement(“a”); link.download=文件名; link.href=window.URL.createObjectURL(blob); link.dataset.downloadurl=[“text/json”,link.download,link.href]。加入(“:”; const evt=新建鼠标事件(“单击”{ 视图:窗口, 泡泡:是的, 可取消:对, }); 链接调度事件(evt); link.remove() }; 返回 } 导出默认的SaveAsJSONPresenter;