【问题标题】:How to test a range of numbers with Jest?如何用 Jest 测试一系列数字?
【发布时间】:2024-04-18 00:40:02
【问题描述】:

我有:

const BOARD = {
  size: {
    columns: 5,
    rows: 5,
  },
}

还有一个 Redux 动作创建者,它在董事会的大小范围内生成一个位置:

const generateInitialPlayerPosition = (
  { 
    x = random(0, BOARD_SIZE.size.rows - 1), 
    y = random(0, BOARD_SIZE.size.columns - 1) 
  } = {}) => ({
  type: GENERATE_INITIAL_PLAYER_POSITION,
  payload: { x, y },
  }
)

我需要测试 generateInitialPlayerPosition 在这种情况下不会返回任何大于 4 的 xy

【问题讨论】:

  • 您是否担心random(0, 4) 可能返回大于4 的值?如果是,你不应该。如果不是,那你为什么需要为此编写测试用例?无论你想出什么测试都会通过(因为random(0, 4) 不会产生大于 4 的数字)。
  • random 来自哪里?如果它是一个外部模块,我会模拟它。

标签: javascript reactjs testing redux jestjs


【解决方案1】:

使用方法.toBeGreaterThanOrEqual.toBeLessThan

const value = ...
expect(value).toBeGreaterThanOrEqual(lower_inclusive);
expect(value).toBeLessThan(upper_exclusive);

【讨论】:

    【解决方案2】:

    如果它们是十进制数字,您可以使用.toBeCloseTo

    test('adding works sanely with decimals', () => {
      expect(0.2 + 0.1).toBeCloseTo(0.3);
    });
    

    【讨论】:

      最近更新 更多