javascript - js switch语句单元测试

标签 javascript testing enzyme jestjs

<分区>

我有一个像这样的 util 函数:

export const selectOperator = (operator, n1, n2) => {
    let result;

    switch(operator) {
        case '+':
            result = n1 + n2;
            console.log(result)
        case "-":
            result = n1 - n2;
        case "*":
            result = n1 * n2;
        case "/":
            result = n1 / n2;
    }

    return result;
}

我正在尝试这样测试:

it('should select the right case based on the operator', () => {
  const operators = ['+', '/', '-', '*']
  const numA = 10
  const numB = 5

  operators.forEach(el => {
    if(el == '+'){
      //selectOperator(el, numA, numB).toEqual(12)
      console.log(selectOperator('+', 10, 5))
    }
    if(el == '-'){
      //selectOperator(el, numA, numB).toEqual(12)
      //console.log(selectOperator(el, numA, numB))
    }
    if(el == '/'){
      //selectOperator(el, numA, numB).toEqual(12)
      //console.log(selectOperator(el, numA, numB))
    }
    if(el == '*'){
      //selectOperator(el, numA, numB).toEqual(12)
      //console.log(selectOperator(el, numA, numB))
    }
  })
})

util 函数中的控制台返回 15,这是正确的,但是测试中的控制台返回 2(似乎是除以 10/5)

最佳答案

您的 switch\case 中没有“break”语句,因此当您在 util 中记录结果时,结果是正确的,但由于缺少 break,结果不断变化.

您的代码应该是:

export const selectOperator = (operator, n1, n2) => {
  let result;

  switch(operator) {
      case '+':
          result = n1 + n2;
          console.log(result)
          break;
      case "-":
          result = n1 - n2;
          break;
      case "*":
          result = n1 * n2;
          break;
      case "/":
          result = n1 / n2;
          break;
  }

  return result;
}

关于javascript - js switch语句单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50158257/

相关文章:

javascript - 我不明白这段类似 Javascript 注释的代码,有人可以澄清一下吗?

javascript - 如何关闭msgBox?

ios - 如何使用 Xamarin 和 F# 在 iOS 上进行单元测试

javascript - 对象中的测试元素是空的,开玩笑

reactjs - 模拟意味着在 1 个节点上运行 = 0 找到

javascript - 使用 jest 和 enzyme 测试高阶组件

reactjs - Jest - 映射一系列项目并测试它们的值

javascript - 仅针对手持设备触发 jQuery

javascript - Jquery addClass 函数在 IE7 中对于 td 元素失败

ruby-on-rails - 在 Controller 中使用 using 方法测试辅助方法