为什么我写这样的代码无法测试已注销的分支? 这是Jest官方的例子.Link就在这里 https://github.com/facebook/jest/blob/master/examples/jquery 原始测试代码只测试登录分支,所以我想测试整个分支。但我无法完成它:(
fetchCurrentUser.mockImplementationOnce(cb => {
cb({
fullName: 'Johnny Cash',
loggedIn: true,
});
}).mockImplementationOnce(cb => {
cb({
fullName: 'Johnny Cash',
loggedIn: false,
});
});
$('#button').click();
expect(fetchCurrentUser).toBeCalled();
expect($('#username').text()).toEqual('Johnny Cash - Logged In');
$('#button').click();
expect(fetchCurrentUser).toBeCalled();
expect($('#username').text()).toEqual('Johnny Cash - Logged Out');
答案 0 :(得分:0)
导致fetchCurrentUser
在点击发生前最初只调用一次。所以你总是得到你的第一个模拟值,即:
cb = > {
cb({
fullName: 'Johnny Cash',
loggedIn: true,
});
}
要测试两者,你可以尝试这样的事情:
let loggedIn = false
fetchCurrentUser.mockImplementationOnce(cb = > {
loggedIn = !loggedIn
cb({
fullName: 'Johnny Cash',
loggedIn: loggedIn,
});
})