如何测试接收事件的函数?

时间:2017-08-16 01:21:18

标签: javascript reactjs unit-testing chai

创建测试对我来说是新的。我正在尝试为接收事件的函数创建测试。如果重要的话,这是onChange来电,而我正在使用chai

我的功能:

export function handleChange(event) {
  if (isNaN(event.target.value)) {
    event.preventDefault();
    alert('input can only be a number');

  } else if (event.target.value > 5) {
    event.preventDefault();
    alert('Rating can not be over 5 stars, please try again');

  } else {
    this.setState({starRate: event.target.value});
  }

1 个答案:

答案 0 :(得分:0)

首先,您将event.preventDefault()应用于输入。在这种情况下,没有“事件”可以阻止,因此代码基本上没用。

其次,当只有event.target.value传递给您的函数时,您正在使用event。在这种情况下,您只是在寻找event.value

要传递当前输入,只需将 this 作为参数传递到JavaScript函数中。 this始终引用当前元素。

这是一个有效的例子:

function handleChange(event) {
  if (isNaN(event.value)) {
    alert('The input can only be a number.');
  } else if (event.value > 5) {
    alert('Rating can not be over 5 stars, please try again.');
  } else {
    alert('The input was OK.');
  }
}
<input onchange="handleChange(this)">

当您输入输入(然后尝试单击输入)时,将抛出alert()

希望这有帮助! :)