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

时间:2017-04-12 05:25:35

标签: jestjs

为什么我写这样的代码无法测试已注销的分支? 这是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');

1 个答案:

答案 0 :(得分:0)

导致fetchCurrentUser在点击发生前最初只调用一次。所以你总是得到你的第一个模拟值,即:

cb = > {
  cb({
    fullName: 'Johnny Cash',
    loggedIn: true,
  });
}

要测试两者,你可以尝试这样的事情:

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