如何用 Jest 测试一系列数字?

Posted

技术标签:

【中文标题】如何用 Jest 测试一系列数字?【英文标题】:How to test a range of numbers with Jest? 【发布时间】:2017-11-26 12:44:45 【问题描述】:

我有:

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 来自哪里?如果它是一个外部模块,我会模拟它。 【参考方案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);
);

【讨论】:

以上是关于如何用 Jest 测试一系列数字?的主要内容,如果未能解决你的问题,请参考以下文章