Pab*_*blo 3 javascript unit-testing jestjs
我试图在模块内的测试中模拟单个函数。这是我只需要模拟的模块generateServerSeed
// seeds.js
const crypto = require('crypto');
const generateServerSeed = function () {
return crypto.randomBytes(4).toString('base64');
};
const hashServerSeed = function (serverSeed) {
const hash = crypto.createHash('sha512');
hash.update(serverSeed);
return hash.digest('hex');
};
module.exports = {
hashServerSeed,
generateServerSeed
};
Run Code Online (Sandbox Code Playgroud)
这是使用该模块的函数:
// blabla.js
import { generateServerSeed, hashServerSeed } from './seeds';
const VeryImportantFunction = () => {
const serverSeed = generateServerSeed();
const hash = hashServerSeed(serverSeed);
return hash;
};
module.exports = {
VeryImportantFunction
};
Run Code Online (Sandbox Code Playgroud)
这是我的测试文件
jest.mock('../seeds');
import { VeryImportantFunction } from '../blabla';
import { generateServerSeed } from '../seeds';
const { hashServerSeed } = jest.requireActual('../seeds');
describe('Playground', function () {
test('blabla', () => {
generateServerSeed.mockReturnValue('1234567890ABCDEF');
expect(VeryImportantFunction()).toBe('f456e02c19ac920...c630bd36cf04b4f57');
});
});
Run Code Online (Sandbox Code Playgroud)
上面我尝试过模拟generateServerSeed,这是可以的。但我无法找到如何离开hashServerSeedusing的原始实现jest.requireActual,因为在测试函数本身中我没有显式调用该函数。
我怎样才能保留hashServerSeed原来的实现和模拟,generateServerSeed而不分离这两个函数,也不使用手动模拟来保持简单。
您确实可以模拟该方法并保留使用 jestgenerateServerSeed的所有原始剩余方法:seedsrequireActual
import { VeryImportantFunction } from '../blabla';
import { generateServerSeed } from '../seeds';
jest.mock('../seeds', () => {
// The mock returned only mocks the generateServerSeed method.
const actual = jest.requireActual('../seeds');
return {
...actual,
generateServerSeed: jest.fn()
};
});
describe('Playground', function () {
test('blabla', () => {
// Mock the return value.
generateServerSeed.mockReturnValue('1234567890ABCDEF');
expect(VeryImportantFunction()).toBe('f456e02c19ac920...c630bd36cf04b4f57');
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5273 次 |
| 最近记录: |