【发布时间】:2019-11-23 17:06:25
【问题描述】:
考虑script.js中的这个模块:
const randomizeRange = (min, max) => {
return Math.floor(Math.random() * (max - min) + min);
};
const randomArr = (n, min, max) => {
const arr = [];
for (let i = 0; i < n; i++) {
arr.push(randomizeRange(min, max));
}
return arr;
};
module.exports = { randomArr, randomizeRange };
在下面的测试文件中,randomizeRangeMock 的调用计数不应该是 100,因为它是在被调用一次的 randomArrMock 内部调用的吗?为什么我得到 0
const randomArr = require("./script").randomArr;
const randomizeRange = require("./script").randomizeRange;
const randomArrMock = jest.fn(randomArr);
const randomizeRangeMock = jest.fn(randomizeRange);
test("tests for randomArr", () => {
expect(randomArrMock(100, 20, 1000)).toHaveLength(100);
expect(randomArrMock.mock.calls.length).toBe(1)
expect(randomizeRangeMock.mock.calls.length).toBe(100) //This fails because its 0
});
【问题讨论】:
-
我能问一下,考虑到它们是非常简单的 JavaScript 方法并且不连接到任何后端 API 或数据库,为什么还要嘲笑这些函数?
-
只是为了学习 JEST 的工作原理,它是一个例子
-
我的意思不是消极的,伙计。我只是好奇并问了一个真正的问题,即为什么要模拟一个使用非常简单的 JS 代码并且没有进行任何复杂后端调用的函数。只是问我自己的清晰度!
-
道歉@AJC24,我误会了!
标签: javascript unit-testing mocking jestjs