如何用 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 测试一系列数字?的主要内容,如果未能解决你的问题,请参考以下文章

如何用 Karma,Jasmine,Webpack 测试 UI 组件系列 配置篇

如何用 jest 解开单个实例方法

如何用 jest 测试 combineReducers

如何用 jest 测试 redux saga?

如何用 jest 测试 nuxt?

如何用 jest 在服务 (NestJS) 中测试模型 (Mongoose)