如何用 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 的 x
或 y
【问题讨论】:
您是否担心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 测试一系列数字?的主要内容,如果未能解决你的问题,请参考以下文章