Jestjs 我应该写什么来测试注销的分支?

Jestjs 我应该写什么来测试注销的分支?,jestjs,Jestjs,为什么我写这样的代码不能测试注销的分支? 这是Jest官方的例子。链接在这里 原始测试代码是分支中唯一的测试登录代码,因此我想测试整个分支。但我无法完成它:( 原因fetchCurrentUser在单击发生之前最初只调用一次。因此,您总是会得到第一个模拟值,即: cb = > { cb({ fullName: 'Johnny Cash', loggedIn: true, }); } 要测试两者,您可以尝试以下方法: let loggedIn = false fet

为什么我写这样的代码不能测试注销的分支? 这是Jest官方的例子。链接在这里 原始测试代码是分支中唯一的测试登录代码,因此我想测试整个分支。但我无法完成它:(


原因
fetchCurrentUser
在单击发生之前最初只调用一次。因此,您总是会得到第一个模拟值,即:

cb = > {
  cb({
    fullName: 'Johnny Cash',
    loggedIn: true,
  });
}
要测试两者,您可以尝试以下方法:

let loggedIn = false
fetchCurrentUser.mockImplementationOnce(cb = > {
  loggedIn = !loggedIn
  cb({
    fullName: 'Johnny Cash',
    loggedIn: loggedIn,
  });
})

还始终获取第一个模拟值:(你能在
loggedIn=!loggedIn
之前记录日志吗?在第一次单击之前,loggedIn:false在第一次单击之后,loggedIn:true在第二次单击之前,loggedIn:true在第二次单击之后,loggedIn:true。第二次调用绝对是错误的。因此这似乎可以工作。现在记录在回调内部。是否向其中传递了正确的值?谢谢很多时候,我发现第二次回调函数不能调用。顺便说一句,你知道为什么吗?
let loggedIn = false
fetchCurrentUser.mockImplementationOnce(cb = > {
  loggedIn = !loggedIn
  cb({
    fullName: 'Johnny Cash',
    loggedIn: loggedIn,
  });
})