首页 > 解决方案 > 如何以不同的方式模拟静态 json 文件以进行测试?

问题描述

我有一个 .json 文件,其中包含{ apiUrl: '#{placeholder}' }我用于 Octopus 部署的文件。

我使用 .json 文件的服务:

import config from '../../configuration/appconfig.json'

function appConfigService() {
    const { apiUrl } = config

    return {
        apiUrl: `${
            apiUrl === '#{placeholder}' ? 'http://localhost:57567' : apiUrl
        }/api/`
    }
}

export default appConfigService

我遇到的问题是测试这两种情况(在同一个 .test 文件中)。如果我去

/__mocks__/appconfigMock.js路线

或者

jest.mock('../../configuration/appconfig.json', () => ({ apiUrl: 'https://a-legit-url.com' }))路线,

所有测试的值都相同。我不能在单个测试中模拟,因为它不适用于导入。我也无法在单个测试中取消模拟。我能找到的唯一解决方案是将测试分成两个文件(荒谬)并分别模拟它们。

我试过了

jest.resetModules()
jest.unmock('../../configuration/appconfig.json')

在我不想使用模拟的测试中,它仍然使用模拟。

这对于静态 json 文件来说是不可能的吗?似乎真的应该如此。

标签: jsonunit-testingmockingjestjs

解决方案


推荐阅读