开玩笑模拟节点配置
mock node config with jest
我目前是第一次在jest和nodejs中介绍自己。
我面临的问题是我必须从 nodejs 配置中模拟两个不同的值。
jest.mock('config')
mockConfigTtl = require('config').get.mockReturnValue(100);
mockConfigScheduling = require('config').get.mockReturnValue('* * * * *');
问题是第二个 mockReturnValue 覆盖了第一个。
是否有可能将展位模拟彼此分开?
也许像这样:
jest.mock('config')
mockConfigTtl = require('config').get('firstKey').mockReturnValue(100);
mockConfigScheduling = require('config').get('secondKey').mockReturnValue('* * * * *');
由于您希望确保您的实现适用于所有可能的配置,我认为最好在不同的描述块中设置多个测试场景,并在每个场景中使用 mockReturnValue
并执行您的实现。
示例:
const config = require('config');
jest.mock('config')
describe('my implementation', () => {
describe('with firstKey 100', () => {
let result
beforeAll(() => {
config.get.mockReturnValue(100)
result = myImplementation()
})
it('should result in ...', () => {
// your assertion here
})
})
describe('with firstKey different than 100', () => {
let result
beforeAll(() => {
config.get.mockReturnValue(1000)
result = myImplementation()
})
it('should result in ...', () => {
// your assertion here
})
})
})
或者如果您想测试更多配置,您可以使用 describe.each
const config = require('config');
jest.mock('config')
describe('my implementation', () => {
describe.each([
100,
200,
300
])('with firstKey: %d', (firstKey) => {
let result
beforeAll(() => {
config.get.mockReturnValue(firstKey)
result = myImplementation()
})
it('should match the snapshot', () => {
expect(result).toMatchSnapshot()
})
})
})
这将生成一个快照,其中包含您的实施结果,如果它发生变化,除非更新快照,否则测试将失败
我目前是第一次在jest和nodejs中介绍自己。 我面临的问题是我必须从 nodejs 配置中模拟两个不同的值。
jest.mock('config')
mockConfigTtl = require('config').get.mockReturnValue(100);
mockConfigScheduling = require('config').get.mockReturnValue('* * * * *');
问题是第二个 mockReturnValue 覆盖了第一个。 是否有可能将展位模拟彼此分开?
也许像这样:
jest.mock('config')
mockConfigTtl = require('config').get('firstKey').mockReturnValue(100);
mockConfigScheduling = require('config').get('secondKey').mockReturnValue('* * * * *');
由于您希望确保您的实现适用于所有可能的配置,我认为最好在不同的描述块中设置多个测试场景,并在每个场景中使用 mockReturnValue
并执行您的实现。
示例:
const config = require('config');
jest.mock('config')
describe('my implementation', () => {
describe('with firstKey 100', () => {
let result
beforeAll(() => {
config.get.mockReturnValue(100)
result = myImplementation()
})
it('should result in ...', () => {
// your assertion here
})
})
describe('with firstKey different than 100', () => {
let result
beforeAll(() => {
config.get.mockReturnValue(1000)
result = myImplementation()
})
it('should result in ...', () => {
// your assertion here
})
})
})
或者如果您想测试更多配置,您可以使用 describe.each
const config = require('config');
jest.mock('config')
describe('my implementation', () => {
describe.each([
100,
200,
300
])('with firstKey: %d', (firstKey) => {
let result
beforeAll(() => {
config.get.mockReturnValue(firstKey)
result = myImplementation()
})
it('should match the snapshot', () => {
expect(result).toMatchSnapshot()
})
})
})
这将生成一个快照,其中包含您的实施结果,如果它发生变化,除非更新快照,否则测试将失败